1

我试图根据登录的用户角色隐藏和显示菜单栏。所以我在剃刀视图中写了一个代码

   @if ( Request.IsAuthenticated && HttpContext.Current.User.IsInRole( "Admin" ) ) {
                 <li>Projects link</li>
                 <li>Profile link</li>
            }

还有这个

 @if (Roles.IsUserInRole( "Admin" ) ) {
                 <li>Projects link</li>
                 <li>Profile link</li>
            }

我已经尝试了这两种代码,它可以工作,但问题是它不适用于所有管理员。当共有 4 个用户具有管理员角色时,它仅适用于一个管理员。

当我声明另一个用户角色财务管理员它为单个用户工作时,也是同样的类型!

所有其他用户都阻止了菜单,但四个用户的用户角色相同。我不知道当剩下三个同样的角色时,它是如何只让一个用户作为管理员的。任何人都可以解释从数据库中获取角色的方法以及它是如何工作的吗?

4

2 回答 2

0

检查webpages_UsersInRoles数据库中的表,因为这是控制哪些角色附加到哪些用户配置文件的原因。

也许在创建用户时分配角色也存在问题。检查您在帐户控制器上的注册方法。你应该有这样的一行:

Roles.AddUserToRole(model.UserName, model.userRole);

如果不是,则在创建用户时可能不会分配角色。

于 2013-02-19T09:59:57.453 回答
0

IsInRole 方法(和所有其他方法)是数据库中的存储过程。在您的数据库中,您有 MemberShip 表。存储过程在这些表上工作。如果您说该代码将适用于连接了管理员角色的一个用户,那么我要检查的第一件事是它不会工作的其他用户是否真的拥有该角色。检查数据库中所有用户和角色连接的表。

于 2013-02-19T08:17:47.787 回答