【问题标题】:How to check user role in MVC 5 identity?如何检查 MVC 5 身份中的用户角色?
【发布时间】:2014-02-24 18:40:14
【问题描述】:

我创建了一个具有自定义角色的 EF 代码优先数据库身份系统。当我注册一个用户时,我把他放在一个角色中,在数据库中我可以看到它适用于 AspNetUserRoles 表。

但是当我尝试使用 User.IsInRole("admin") 检查用户角色时,即它总是返回 false(我尝试使用低、高、一路大小写)。 我需要在 webconfig 中添加一些东西吗?或者我在这里缺少什么?这是我第一次使用这个新的身份系统进行开发,我认为这有点令人困惑。

在我的即时窗口中:

User.Identity.Name
"teste06"
User.Identity.IsAuthenticated
true
User.IsInRole("admin")
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in     System.Data.dll

例外:

在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供程序 SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

【问题讨论】:

  • 你从哪里调用 User.IsInRole?
  • @AlexDresko 我在登录后调用了一个正常的操作。
  • 你检查过User.Identity.Name,是否包含登录用户名??
  • @gaurav 检查我的编辑
  • 好的,所以当您调用 IsInRole 函数时遇到异常,我认为您应该检查内部异常,它可能包含更详细的错误消息,也发布内部异常消息?

标签: asp.net-mvc asp.net-mvc-5 asp.net-identity


【解决方案1】:

好像激活了管理员角色 它正在尝试创建一个 SQL Express 数据库 为了验证角色,我遇到了同样的问题,我通过将此代码添加到我的 web.config 文件

<system.webServer>
  <modules>
    <remove name="RoleManager" />
  </modules>
</system.webServer>

【讨论】:

    【解决方案2】:

    你必须确保在你的创业课程中有这个

    app.UseSignInCookies();
    

    另外,我猜你的 DbContext 类派生自 IdentityDbContext&lt;ApplicationUser&gt;IdentityDbContext

    如果没有,请确保这样做。

    this文章供参考。

    可以找到与您的问题相关的类似帖子here

    【讨论】:

    • 嗨,错误是我错过了 webconfig 文件中的角色管理器。谢谢!
    • @ggui 那么莱昂纳多的答案是正确的吗?标记一下。
    猜你喜欢
    • 2013-11-10
    • 2014-12-11
    • 2014-04-17
    • 2019-08-22
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    相关资源
    最近更新 更多