对当前角色的成员资格检查

时间:2012-02-02 20:29:05

标签: asp.net-mvc membership

我有一个Web应用程序(MVC),它使用了auth / auth的成员资格,其中用户可以拥有多个角色,并且可以将具有不同角色的国家/地区倍增。

比方说,user1是美国的Admin和Editor,墨西哥只有Editor。当用户登录系统时,系统会提示他们同时选择(国家和角色)。

AdminController具有[Authorize(Rol =“Admin”)]属性。

在这种情况下,如果用户以编辑者身份登录USA,则AdminContoller中的操作必须为forbbiden。

检查用户当前登录的角色的“更好”方法是什么?

1 个答案:

答案 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更详细地介绍了这一主题。