我有一个Web应用程序(MVC),它使用了auth / auth的成员资格,其中用户可以拥有多个角色,并且可以将具有不同角色的国家/地区倍增。
比方说,user1是美国的Admin和Editor,墨西哥只有Editor。当用户登录系统时,系统会提示他们同时选择(国家和角色)。
AdminController具有[Authorize(Rol =“Admin”)]属性。
在这种情况下,如果用户以编辑者身份登录USA,则AdminContoller中的操作必须为forbbiden。
检查用户当前登录的角色的“更好”方法是什么?
答案 0 :(得分:0)
您可以创建自定义授权属性:
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// Code here checks that user is Admin for currently selected Country
}
}
然后使用您的属性:
[CustomAuthorizeAttribute (Roles="Admin")]
This article更详细地介绍了这一主题。