检查网站中用户可访问元素的最佳实践方法是什么?

时间:2013-08-18 02:14:14

标签: asp.net-mvc asp.net-mvc-4 authorization

我可以想到几种方法来实现这一点(假设在Windows机器上托管的网站):

A)JavaScript方面:存储经过身份验证的用户的可访问性角色(例如Admin,Demo-User,...等),并基本上根据此角色呈现(或不呈现或禁用)相关的html元素/控件。

B)MVC方面:[A]中的解释基本上是在IIS上完成的,因此根据用户的角色操纵通过.CSHTML呈现的视图。

C)[A]和[B]:这是最有可能的情况。

拜托,我希望社区有关此事的专业和经验丰富的意见。

1 个答案:

答案 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>
}