web.config
<roleManager enabled="true" defaultProvider="SqlRoleManager">
<providers>
<clear />
<add name="SqlRoleManager"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="DefaultConnection"
/>
</providers>
</roleManager>在asp.net MVC5中,我试图检测当前用户的角色,以便将他重定向到特定于其角色的页面,但是
在我的控制器中
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是用于web表单的(我不确定)
发布于 2017-02-19 17:21:00
我正在打电话,所以不能重复检查,但我确信IsUserInRole()会接受一个像IsUserInRole("superadmin")这样的参数来检查会话中的当前用户。我将删除用户名部分,因为您检查的是当前用户,而不是不同的命名用户。它更快,至少会检查和消除一部分逻辑。
您是如何设定角色的?
https://stackoverflow.com/questions/40827275
复制相似问题