我们以这种方式保护具有特定角色名称的授权属性的操作
[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");