【问题标题】:What is best practice method of checking for user accessible elements in a website?检查网站中用户可访问元素的最佳实践方法是什么?
【发布时间】:2013-08-18 02:14:13
【问题描述】:
我可以想到几种方法来实现这一点(假设网站托管在 Windows 机器上):
A) JavaScript 端:存储经过身份验证的用户的可访问性角色(例如 Admin、Demo-User 等)并基于此角色基本上呈现(或不呈现或禁用)相关的 html 元素/控件。
B) MVC 方面:[A] 中的解释基本上是在 IIS 上完成的,因此通过 .CSHTML 呈现的视图是根据用户的角色来操作的。
C) [A] 和 [B] 的组合:这是最可能的情况。
请,我希望社区就此事提供专业和经验丰富的意见。
【问题讨论】:
标签:
asp.net-mvc
asp.net-mvc-4
authorization
【解决方案1】:
我只使用方法 A,但是以不同的方式。
由于我在我的应用程序中使用默认的简单成员资格,因此我只需将一些角色添加到数据库中并将适当的用户添加到这些角色中。
然后,为了过滤内容,我只做两件事:
1) 我使用[Authorize] 属性将控制器请求过滤到适当的角色:
[Authorize(Roles = "role1, role2, ...")]
2) 我创建了一个局部视图来呈现导航栏/主菜单。在那个视图中,我首先检索当前用户的角色:
var roles = Roles.GetRolesForUser(User.Identity.Name);
然后,根据他/她的角色,我渲染菜单项:
bool hasRole1 = roles.Contain("role1") | roles.Contain("admin");
// ...
@if (hasRole1)
{
<li>...</li>
}