Hak*_*emi 7 asp.net-mvc roles asp.net-identity
我在mvc 5网站上使用Identity 2进行身份验证.在我看来,我想检查用户的角色:
@if(User.IsInRole("Customers"))
{
@*do something*@
}
Run Code Online (Sandbox Code Playgroud)
但这总是返回false,我已经<roleManager enabled="true" />在web配置中设置 了.请帮忙.
我只是使用我的设置也使用Identity Framework.
我使用以下代码将用户添加到角色:
this.RoleManager.CreateAsync(new Role() {Name = "Customers"});
this.UserManager.AddToRoleAsync(this.User.Identity.GetUserId<int>(), "Amazing");
Run Code Online (Sandbox Code Playgroud)
然后在那之后的任何时候,当我跑的时候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);
Run Code Online (Sandbox Code Playgroud)
从这一点开始,User.IsInRole("Customers")为我工作并返回true.
除非您可以在应用程序中验证它是否知道要将其添加到的角色,否则这将无效.您可以通过以下方式使用RoleManager验证角色"Customers"的存在:
var roleExists = (this.RoleManager.FindByNameAsync("Customers").Result != null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5516 次 |
| 最近记录: |