在允许系统访问某个特定页面之前,系统检查用户角色的机制的最佳实现方式是什么?也可以在页面中启用某些链接/操作,例如对于具有超级'的用户。角色,他们可能能够删除/编辑数据,而其他人只能看到它?
为了您的信息,我不使用ASP.NET MVC中的开箱即用的用户管理(用户是在嵌入到webapp的.mdf数据库中创建的),但是我已经开发了自己的用户模块(用于验证,注册和删除用户)。
那么......这个问题的最佳做法是什么?
答案 0 :(得分:2)
您可以撰写自定义ValidationAttribute
:http://msdn.microsoft.com/en-AU/library/system.componentmodel.dataannotations.validationattribute.aspx
基本上,您从ValidationAttribute
继承,并覆盖IsValid()
:
public class IsAnAdminAttribute : ValidationAttribute {
protected override bool IsValid(object obj) {
if (Membership.UserInRole("admin"))
return true; // they can access it
else
return false; // can't access it
}
}
..然后将其应用于控制器操作:
[HttpGet]
[IsAnAdmin]
public ActionResult MyAction() {
// only administrators can access this now
}