ASP.Net MVC5: Использование идентичности, как прикрепить роль с пользователем после входа в систему - PullRequest
0 голосов
/ 11 мая 2018

Таким способом мы защищаем действие с атрибутом авторизации с определенным именем роли

[Authorize(Roles="members, admin")]

предположим, что пользователи и роли отображаются в таблице базы данных. поэтому, когда пользователь входит в систему, то как я могу прикрепить роль с вошедшим в систему пользователем с использованием идентификатора.

здесь я публикую URL и пример, которые показывают, как люди делают то же самое в mvc4 с пользовательской формой аутентификации. просто посмотрите код, и я надеюсь, что вы наверняка поймете, что я пытаюсь сделать с asp.net mvc 5, используя удостоверение личности. https://www.codeproject.com/Articles/408306/Understanding-and-Implementing-ASP-NET-Custom-Form см. этот URL-адрес выше для проверки подлинности с помощью asp.net mvc 4

protected void FormsAuthentication_OnAuthenticate(Object sender, FormsAuthenticationEventArgs e)
{
    if (FormsAuthentication.CookiesSupported == true)
    {
        if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
        {
            try
            {
                //let us take out the username now                
                string username = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value).Name;

                //let us extract the roles from our own custom cookie
                string roles = DBHelper.GetUserRoles(username);

                //Let us set the Pricipal with our user specific details
                e.User = new System.Security.Principal.GenericPrincipal(
                  new System.Security.Principal.GenericIdentity(username, "Forms"), roles.Split(';'));
            }
            catch (Exception)
            {
                //somehting went wrong
            }
        }
    }
}

Я работаю с asp.net mvc 5 и системой идентификации. Пожалуйста, помогите и направьте меня. спасибо

1 Ответ

0 голосов
/ 11 мая 2018

Сначала необходимо войти в систему с идентификатором пользователя

var UserName= await User.Identity.GetUserId()

, затем вы можете назначить любую роль этому зарегистрированному пользователю, например

var _context = new ApplicationDbContext();
var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(_context));
UserManager.AddToRole("UserName", "UserRole");
...