Как получить доступ к аутентифицированным и авторизованным данным пользователя? - PullRequest
0 голосов
/ 14 декабря 2018

Например:

У меня есть простое приложение!

и по умолчанию страница регистрации простого пользователя и страница входа в систему по умолчанию реализуются (когда мы выбираем mvctempate).

Поэтому я добавил новые свойства для модели регистрации пользователей.Примерно так.

public class ApplicationUser : IdentityUser
{
    [Required]
    [StringLength(255)]
    public string FirstName { get; set; }

    [Required]
    [StringLength(50)]
    public string LastName { get; set; }

    [Required]
    [StringLength(10)]
    public string Gender { get; set; }

    [Required]
    [StringLength(50)]
    public UserType UserType { get; set; }

    [Required]
    [StringLength(255)]
    public Department Depatment{ get; set; }

    [Required]
    [StringLength(50)]
    public Session Session { get; set; }
}

и эти свойства также добавляются в RegisterViewModel для рендеринга страницы регистрации и т. Д.

Вопрос:

Когда новый пользователь зарегистрирован!и войдите в приложение.Итак, теперь я хочу получить доступ к зарегистрированным данным пользователя?т.е. FirstName, LastName, Gender и т.д ..

Я пробовал User.Identity.?, но нет таких свойств?что ранее я добавил в ApplicationUser?

я хочу получить доступ ко всем свойствам пользователя LoggedIn и отобразить его в виде.

[Authorize]
public ActionResult Index()
{
    // Retreiving LoggedIn User Details.
    // ....
    // ....
    // LoggedInUserInfo = // assigning all the User details to the LoggedUserInfo

    return View(LoggedInUserInfo); // LoggedInUserInfo is a separete class that having several properties such as firstName, lastName, Gener, etc...
}

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вы можете внедрить класс UserManager и затем использовать его для получения информации о пользователе приложения.

private UserManager<ApplicationUser> _userManager;
public YourController(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}

Их в вашем методе:

var user = await _userManager.GetUserAsync(User);
var firstName = user.FirstName;
var lastName = user.LastName;
var middleName = user.MiddleName;
var documentNumber = user.DocumentNumber;

Надеюсь, это поможет.

0 голосов
/ 14 декабря 2018

В сочетании с вашим ApplicationDbContext и методом расширения GetUserId() вы можете найти вошедшего в систему ApplicationUser:

ApplicationUser loggedInUser = applicationDbContext.Users.Find(HttpContext.User.Identity.GetUserId());
...