我可以想到几种方法来实现这一点(假设在Windows机器上托管的网站):
A)JavaScript方面:存储经过身份验证的用户的可访问性角色(例如Admin,Demo-User,...等),并基本上根据此角色呈现(或不呈现或禁用)相关的html元素/控件。
B)MVC方面:[A]中的解释基本上是在IIS上完成的,因此根据用户的角色操纵通过.CSHTML呈现的视图。
C)[A]和[B]:这是最有可能的情况。
拜托,我希望社区有关此事的专业和经验丰富的意见。
答案 0 :(得分:1)
我只使用方法A,但方式不同。
当我在我的应用程序中使用默认的简单成员资格时,我只是在数据库中添加了一些角色,并为这些角色添加了适当的用户。
然后,为了过滤内容,我只做了两个工作:
1)我使用[Authorize]
attrib:
[Authorize(Roles = "role1, role2, ...")]
2)我创建了一个局部视图来渲染导航栏/主菜单。在该视图中,我首先检索当前用户的角色:
var roles = Roles.GetRolesForUser(User.Identity.Name);
然后,根据他/她的角色,我渲染菜单项:
bool hasRole1 = roles.Contain("role1") | roles.Contain("admin");
// ...
@if (hasRole1)
{
<li>...</li>
}