ASP.NET标识动态角色授权



由于我是ASP.NET Identity的新手,我正在浏览MVA上的一段视频,Jeremy Foster在演示时问了一个问题,即如何使以下内容动态化:

[Authorize("Administrators, Users")]
public ActionResult SomeAction()
{
  //Access to only admins and users
}

Adam Tuliper在回答时说,可以用Claims来完成,但我在互联网上找不到任何具体的东西,或者我可能不理解。但如果有人能告诉我如何做到这一点,我将不胜感激。

这一点很重要,因为以后,我可能希望允许SomeAction由另一个角色访问,如果每次都需要重新编译和部署我的应用程序,那就不好了。此外,我可能会将控制权交给用户,以更改其他类型用户的访问权限。

在过去,我通过重写Authorize属性来实现这一点,在该属性中,我从cookie中提取用户的RoleId,并从数据库中检查用户是否有权访问所请求的操作。但不确定如何使用Claims来完成。

这样的东西怎么样:您可以将其与数据库一起使用,也可以简单地在web.config中维护一个授权角色列表。

 [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    public class MyCustomAuthorizationAttribute : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            // Do some logic here to pull authorised roles from backing store (AppSettings, MSSQL, MySQL, MongoDB etc)
            ...
            // Check that the user belongs to one or more of these roles 
            bool isUserAuthorized = ....;
            if(isUserAuthorized) 
                return true;
            return base.AuthorizeCore(httpContext);
        }
    }

相关内容

  • 没有找到相关文章

最新更新