Как я могу получить свой собственный пользователь в контроллере в ядре Asp.net MVC - PullRequest
2 голосов
/ 17 мая 2019

У меня есть класс пользователя:

public class User : Entity
{

    public void AcceptMenu(Menu menu)
    {
      //AcceptMenu 
    }      
    public string Login { get; set; }
    public string Password { get; set; }
    public string Salt { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

И я создаю логику авторизации.Метод аутентификации выглядит следующим образом:

      private async Task Authenticate(User user)
    {

        var claims = new List<Claim>
        {
            new Claim(ClaimsIdentity.DefaultNameClaimType, user.Login),
            new Claim(ClaimsIdentity.DefaultRoleClaimType, user.Role)
        };

        ClaimsIdentity id = new ClaimsIdentity(claims, "ApplicationCookie", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType);

        await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(id));
    }

Как видите, у меня есть метод AcceptMenu в User.Как получить пользователя в контроллере и выполнить метод AcceptMenu?

Ответы [ 3 ]

2 голосов
/ 17 мая 2019

Контроллер имеет свойство User с типом IPrincipal. Вы можете получить имя пользователя с помощью User.Identity.Name, но это имя аутентифицированного пользователя asp.net. Вы можете сопоставить этого аутентифицированного пользователя с вашим классом пользователя. в контроллере

ApplicationUserManager UserManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();

ApplicationUser  user = await UserManager.FindByEmailAsync(User.Identity.Name);

Где ApplicationUserManager - это класс с конфигурацией идентификации, а ApplicationUser - это IdentityUser из этого класса. Но это не ваш пользователь базы данных, полученный из класса сущностей, он должен отображаться вручную

0 голосов
/ 17 мая 2019

Как получить текущий зарегистрированный идентификатор пользователя в ASP.NET Core Как только вы получите значение из ClaimsPricipal, вы можете передать значение в качестве параметра.

0 голосов
/ 17 мая 2019

Вы всегда можете использовать var loggedInUser = await useManager.GetUserAsync(User), чтобы получить пользователя, если вы вошли в систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...