的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
适用于网络表单(我不确定)
答案 0 :(得分:0)
我在手机上所以不能仔细检查,但我确定IsUserInRole()会接受像IsUserInRole(&#34; superadmin&#34;)这样的单个参数来检查会话中的当前用户。我会删除用户名部分,因为您要检查当前用户而不是其他命名用户。它更快,至少会检查并消除逻辑的一部分。
你是如何播种这些角色的?