我使用自定义角色创建 EF 代码优先数据库标识系统。当我注册一个用户时,我把他放在一个角色中,在数据库中我可以看到它适用于AspNetUserRoles表。
但是当我尝试使用 User.IsInRole("admin") 检查用户角色时,即它总是返回 false(我尝试使用低、高、一直大小写)。我需要在网络配置中放一些东西吗?或者我在这里缺少什么?这是我第一次使用这个新的身份系统进行开发,我认为这有点令人困惑。
在我的即时窗口中:
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 - 查找指定的服务器/实例时出错)
管理器已激活并且它正在尝试创建一个 SQL 快速数据库为了验证角色,我遇到了同样的问题,我通过将此代码添加到我的web.config file
<system.webServer>
<modules>
<remove name="RoleManager" />
</modules>
</system.webServer>
你必须确保在你的启动类中有这个
app.UseSignInCookies();
另外,我猜你的DbContext
类派生自IdentityDbContext<ApplicationUser>
或IdentityDbContext
。
如果没有,请确保这样做。
查看本文以供参考。
与您的问题相关的类似帖子可以在这里找到