【问题标题】:MVC4 Authorize Attribute overide; how to get passed in Roles?MVC4 授权属性覆盖;如何通过角色?
【发布时间】:2012-12-01 20:54:53
【问题描述】:

我正在尝试创建自己的 [Authorize] 属性,以便我可以使用自己的授权逻辑来拥有分层角色。

如果有人在控制器或操作上执行[Authorize(Roles = "Admin")] 如何在我的 AuthorizeCore 函数中获取字符串“Admin”?

我正在使用此代码:

public class Authorize : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        //authorize role logic
            if (true)
                return true;

        return false;
     }
    }

MVC4、.net 4.5、c#、VS 2012

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 authorize-attribute


    【解决方案1】:

    如果您需要获取允许的角色列表,您可以简单地获取 Roles 属性。它将列出在属性装饰中指定的字符串。

    public class Authorize : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            var allowedRoles = Roles;
        }
    }
    

    你可以在AuthorizeAttribute definition看到这个

    【讨论】:

      【解决方案2】:

      角色是公共属性。你应该可以这样做:

      public class Authorize : AuthorizeAttribute
      {
          protected override bool AuthorizeCore(HttpContextBase httpContext)
          {
      
              if(Roles.Contains("MyRole"))
                 return true;
      
              return false;
          }
      }
      

      或者你需要做的任何事情

      【讨论】:

        【解决方案3】:

        这是你经常遇到的事情。

        这篇文章中的建议应该在 MVC4 中工作,因为它在 MVC 3 中工作:-ASP.NET MVC - Alternative to Role Provider?

            protected override bool AuthorizeCore(HttpContextBase httpContext)
            {
                bool isAdmin;
                if(Roles.Contains("Admin"))
                   isAdmin = true;
        
                return isAdmin ;
            }
        

        【讨论】:

        • 谢谢,我的印象是Roles是当前登录用户的角色,没想到会有[Authorize("Admin")]传入的东西
        • @user1308743,没问题,投票答案也是一件好事,不要忘记;)
        • 我只是在等待时间限制过去,标记为答案并投票=)
        • 没问题,如果有任何问题,请告诉我。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-03
        相关资源
        最近更新 更多