我正在使用 Identity 2 在 mvc 5 网站中进行身份验证。在我看来,我想检查用户的角色:
@if(User.IsInRole("Customers"))
{
@*do something*@
}
但这总是返回 false,我已经设置了<roleManager enabled="true" />
在网络配置中。
请提供任何帮助。
我刚刚让它与我的设置一起使用,该设置也使用身份框架。
我使用以下代码将用户添加到角色:
this.RoleManager.CreateAsync(new Role() {Name = "Customers"});
this.UserManager.AddToRoleAsync(this.User.Identity.GetUserId<int>(), "Amazing");
然后在那之后的任何时候,当我跑步时User.IsInRole("Customers");
它返回错误,直到我重新登录它们。
将用户添加到角色后,需要重新登录该用户。角色信息存储在 cookie 中。
我运行以下命令再次登录用户:
var user = await this.UserManager.FindByNameAsync("bob");
var identity = await this.UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
this.AuthManager.SignIn(new AuthenticationProperties() { IsPersistent = true }, identity);
从这一点来说,User.IsInRole("Customers")
为我工作并返回true
.
但是,除非您可以在应用程序中验证它是否知道您要将它们添加到的角色,否则这将不起作用。您可以通过使用 RoleManager 按以下方式验证角色“Customers”是否存在:
var roleExists = (this.RoleManager.FindByNameAsync("Customers").Result != null);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)