ASP.Net MVC5:使用标识如何在登录后将角色附加到用户



我们以这种方式保护具有特定角色名称的授权属性的操作

[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和Identity System。 请帮助和指导我。

谢谢

您必须先登录用户ID

var UserName= await User.Identity.GetUserId()

然后,您可以将任何角色分配给登录用户,例如

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

相关内容

  • 没有找到相关文章

最新更新