gpt4 book ai didi

asp.net-mvc - User.IsInRole返回false

转载 作者:行者123 更新时间:2023-12-04 11:36:39 24 4
gpt4 key购买 nike

我正在使用Identity 2在mvc 5网站中进行身份验证。在我看来,我想检查用户的角色:

@if(User.IsInRole("Customers"))
{
@*do something*@
}

但这总是返回false,我已经在Web配置中设置了 <roleManager enabled="true" />
请任何帮助。

最佳答案

我只是将其与也使用Identity Framework的安装一起使用。

我通过使用以下代码将用户添加到角色:

this.RoleManager.CreateAsync(new Role() {Name  = "Customers"});

this.UserManager.AddToRoleAsync(this.User.Identity.GetUserId<int>(), "Amazing");

然后在此之后的任何时间,当我运行 User.IsInRole("Customers");时,它返回false,直到我重新将它们重新登录。

将用户添加到角色后,您需要重新登录用户。角色信息存储在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);

关于asp.net-mvc - User.IsInRole返回false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30369157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com