首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET身份检查用户角色不起作用

ASP.NET身份检查用户角色不起作用
EN

Stack Overflow用户
提问于 2013-11-22 05:56:37
回答 3查看 25.3K关注 0票数 23

我有一个ASP.NET MVC5应用程序。我使用标准的ASP.NET身份提供者进行用户和角色管理。使用自己的存储库项目中的IdentityUser是很重要的,但这似乎没问题。我可以注册、登录、编辑用户和管理他们的角色。

我用以下几行代码将用户添加到角色:

代码语言:javascript
复制
UserManager.AddToRole(userdetail.Id, r);
db.Entry(userdetail).State = EntityState.Modified;
db.SaveChanges();

这似乎可以在数据库级别工作。

但是,我不能使用基于角色的身份验证,实际上

代码语言:javascript
复制
HttpContext.User.IsInRole("Administrator")

也不起作用。

代码语言:javascript
复制
[Authorize(Roles="Administrator")]

也不起作用。

我只能通过这种方式来检查用户是否为管理员:

代码语言:javascript
复制
UserManager.IsInRole(userID, "Administrator").

为什么?

在我发现的每个教程中,一切都运行得很好。不同的项目存储库可能是原因?还是ASP.NET身份被破坏得如此之深?

敬请指教,

EN

回答 3

Stack Overflow用户

发布于 2014-04-09 22:30:46

在这种情况下,您需要注销并重新登录该用户。

因为角色数据也存储在cookie中,所以您必须再次发出cookie才能使用它。

票数 25
EN

Stack Overflow用户

发布于 2013-11-22 06:04:52

你的web.config里有这个条目吗?

代码语言:javascript
复制
    <roleManager enabled="true">
        <providers>
            <clear />
            <add connectionStringName="ApplicationServices" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" applicationName="/" />
        </providers>
    </roleManager>

此外,如果我没记错的话,在不同版本的.NET中,角色提供程序程序集也有不同的命名空间。

票数 0
EN

Stack Overflow用户

发布于 2021-09-09 05:11:57

我在Asp.Net核心中使用IsInRoleAsync,在我的例子中,问题是我在创建角色时忽略了它的规范化名称。因此,在更新角色的规范化名称后,一切都正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20132795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档