none
Получение информации о профиле пользователя Asp.Net Identity. RRS feed

  • Вопрос

  • Нашел несколько примеров для MVC.

        • public class MyUser : IdentityUser
        •     {
        •         public virtual MyUserInfo MyUserInfo { get; set; }
        •     }
        •  
        •     public class MyUserInfo{
        •         public int Id { get; set; }
        •         public string FirstName { get; set; }
        •         public string LastName { get; set; }
        •     }
        •     public class MyDbContext : IdentityDbContext<MyUser>
        •     {
        •         public MyDbContext()
        •             base("DefaultConnection")
        •         {
        •         }
        •         public System.Data.Entity.DbSet<MyUserInfo> MyUserInfo { get; set; }
      •      }

    Getting Profile information

    • When the User Logs in, you can display the profile information by doing the following
    • Get the current logged in UserId, so you can look the user up in ASP.NET Identity system
      • var currentUserId = User.Identity.GetUserId();
    • Instantiate the UserManager in ASP.Identity system so you can look up the user in the system
      • var manager = new UserManager<MyUser>(new UserStore<MyUser>(new MyDbContext()));
    • Get the User object
      • var currentUser = manager.FindById(User.Identity.GetUserId());
    • Get the profile information about the user
    • currentUser.MyUserInfo.FirstName

    --------------------------------------------------

    Второй пример

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using AspNetIdentity2.Models; namespace AspNetIdentity2.Controllers { publicclass ApplicationBaseController : Controller { protectedoverridevoid OnActionExecuted(ActionExecutedContext filterContext) { if (User != null) { var context = new ApplicationDbContext(); var username = User.Identity.Name; if (!string.IsNullOrEmpty(username)) { var user = context.Users.SingleOrDefault(u => u.UserName == username); string fullName = string.Concat(newstring[] { user.FirstName, " ", user.LastName }); ViewData.Add("FullName", fullName); } } base.OnActionExecuted(filterContext); } public ApplicationBaseController() { } } }

    Потом добавляется код на страницу:

    @Html.ActionLink("Hello " + (ViewData["FullName"]) + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })

    Но как все это делается для Web Forms так найти и не могу, буду очень благодарен за помощь. 

    3 ноября 2015 г. 12:40

Ответы

  • В общем после долгих поисков.

    Решил данную проблему вот таким методом:

    Добавил в первую очередь в web.config Microsoft.AspNet.Identity.Owin

    <pages>
          <namespaces>
            <add namespace="System.Web.Optimization" />
            <add namespace="Microsoft.AspNet.Identity" />
            <add namespace="Microsoft.AspNet.Identity.Owin"/>

    ....

    </namespaces>

    Далее вместо Context.User.Identity.GetUserName(), вставил код: 

    <%: HttpContext.Current.GetOwinContext().GetUserManager<kit.ApplicationUserManager>().FindById(Context.User.Identity.GetUserId()).ProfilesUsers.LastName %>

    <%: HttpContext.Current.GetOwinContext().GetUserManager<"Название проекта".ApplicationUserManager>().FindById(Context.User.Identity.GetUserId())."база профиля".LastName %>

    Метод правда длинный, более короткий не работает у меня:

    <%: ((YourIdentity)Context.User.Identity).FirstName %>

    Но и его в дальнейшем разберу, в дальнейшем найдя решение выложу в данную ветку.

    • Помечено в качестве ответа MacroMax 16 ноября 2015 г. 2:35
    16 ноября 2015 г. 2:35

Все ответы

  • http://www.asp.net/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/membership-and-administration

    Mak Arti

    3 ноября 2015 г. 13:03
  • http://www.asp.net/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/membership-and-administration

    Mak Arti

    Данный пример не раз рассматривал.

    Сейчас стандартно стоит Context.User.Identity.GetUserName() которое возвращает UserName, мне нужно типа Context.User.Identity.GetLastName() чтоб возвращало Фамилию.

    В принципе вообще Фамилия + Имя.

    Примеры нашел, но они все на MVC, такое ощущение что Web Forms умер....

    3 ноября 2015 г. 13:11
  • Ну можно расширение написать для Identity. По UserName находите в бд Фамилию и Имя. 

    https://msdn.microsoft.com/ru-ru/library/bb383977.aspx?f=255&MSPPError=-2147217396

    Расширение для IIdentity


    Mak Arti

    3 ноября 2015 г. 13:34
  • В общем после долгих поисков.

    Решил данную проблему вот таким методом:

    Добавил в первую очередь в web.config Microsoft.AspNet.Identity.Owin

    <pages>
          <namespaces>
            <add namespace="System.Web.Optimization" />
            <add namespace="Microsoft.AspNet.Identity" />
            <add namespace="Microsoft.AspNet.Identity.Owin"/>

    ....

    </namespaces>

    Далее вместо Context.User.Identity.GetUserName(), вставил код: 

    <%: HttpContext.Current.GetOwinContext().GetUserManager<kit.ApplicationUserManager>().FindById(Context.User.Identity.GetUserId()).ProfilesUsers.LastName %>

    <%: HttpContext.Current.GetOwinContext().GetUserManager<"Название проекта".ApplicationUserManager>().FindById(Context.User.Identity.GetUserId())."база профиля".LastName %>

    Метод правда длинный, более короткий не работает у меня:

    <%: ((YourIdentity)Context.User.Identity).FirstName %>

    Но и его в дальнейшем разберу, в дальнейшем найдя решение выложу в данную ветку.

    • Помечено в качестве ответа MacroMax 16 ноября 2015 г. 2:35
    16 ноября 2015 г. 2:35