ASP.NET身份动态角色授权

时间:2015-12-24 15:08:58

标签: c# asp.net asp.net-mvc asp.net-identity asp.net-identity-2

由于我是ASP.NET身份的新手,当Jeremy Foster在演示如何使以下内容成为动态时提出问题时,我正在浏览有关MVA的视频:

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

作为回答,Adam Tuliper表示可以使用声明以某种方式完成,但我没有在互联网上找到任何具体内容,或者我可能不理解。但如果有人能告诉我如何做到这一点,我将不胜感激。

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

过去我通过覆盖Authorize属性完成此操作,我从cookie中提取用户的RoleId,并从数据库中检查用户是否有权访问所请求的操作。但不确定如何使用声明来完成。

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样: 您可以将它与数据库一起使用,或者只是在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);
        }
    }