【问题标题】:ASP.NET MVC Authorize attribute with a parameter带有参数的 ASP.NET MVC 授权属性
【发布时间】:2014-04-26 11:24:29
【问题描述】:

我开始用

装饰我的控制器类

[Authorize(Roles = @"DOMAIN\ADGroup")]

将显式字符串更改为从数据库收集角色分配的参数的最佳方法是什么,从而允许管理员区域可以灵活地进行角色分配。

例如说我有三个角色,为了争论

  • 只读
  • 读写
  • 管理员

我想将这些角色映射到多个 AD 组

例如

  • 只读 --> DOMAIN\Group1, DOMAIN\Group2, DOMAIN\Group3
  • 读写--> DOMAIN\GroupWrite, DOMAIN\GroupManagers
  • 管理员 --> DOMAIN\DomainAdmins

这将是可编辑的,我可以修改从角色到我在应用程序管理区域中选择的任何 AD 组的映射。

我的 Authorize 属性如何利用这一点?

【问题讨论】:

    标签: c# asp.net asp.net-mvc windows-authentication authorize-attribute


    【解决方案1】:

    您可以扩展AuthorizeAttribute 类。我是这样做的:

    public class ExtendedAuthorizeAttribute : AuthorizeAttribute
    {
        protected string permission;
        protected string group;
    
        public ExtendedAuthorizeAttribute(string Permission, string Group)
        {
            permission = Permission;
            group = Group;
        }
    
        protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
        {
            var can = PermissionManager.Can(httpContext.User, permission, group);
            if(can.HasValue)
                return can.Value;
            return base.AuthorizeCore(httpContext);
        }
    }
    

    【讨论】:

      【解决方案2】:

      Make your own role provider 根据当前用户的 AD 角色返回您的 ReadOnly 等角色列表。然后,您可以使用 Authorize 属性来引用这些角色。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-23
        • 1970-01-01
        • 1970-01-01
        • 2011-09-03
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        相关资源
        最近更新 更多