【发布时间】:2017-04-11 04:05:10
【问题描述】:
web.config
<roleManager enabled="true" defaultProvider="SqlRoleManager">
<providers>
<clear />
<add name="SqlRoleManager"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="DefaultConnection"
/>
</providers>
</roleManager>
在 asp.net mvc 5 中,我正在尝试检测当前用户的角色,以便我可以将他重定向到特定于其角色的页面,但是
在我的控制器中
if (Roles.IsUserInRole(User.Identity.GetUserName(), "superadmin")
或
if (Roles.IsUserInRole(User.Identity.Name, "superadmin")
两者都不正确,我确定我已登录,因为 User.Identity.GetUserName() 正在显示我的登录信息
尝试调试,发现Roles.GetRolesForUser()是空的,查了网上资源还是没有解决办法
进一步调试显示Roles.GetAllRoles()也是空的,但我的AspNetRoles表有5条记录。
我查看了 AspNetUserRoles,发现我当前的用户 ID 已分配给特定角色 ID
我已经成功运行 aspnet_regsql.exe 来添加所有功能,但仍然无法获得角色
我认为aspnet_regsql.exe 用于网络表单(我不确定)
【问题讨论】:
标签: c# asp.net asp.net-mvc authentication asp.net-mvc-5