c# - 带有参数的 ASP.NET MVC 授权属性

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

我开始用

装饰我的 Controller 类

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

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

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

  • 只读
  • 读写
  • 管理员

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

例如

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

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

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

最佳答案

您可以扩展 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);
    }
}

关于c# - 带有参数的 ASP.NET MVC 授权属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23310156/

相关文章:

c# - 未使用类中的 IEquatable(有关列表的问题)

c# - 从其他 C# 服务器端 Controller 调用 ASP.NET post 路由

mysql - 从数据库更新模型 | Visual Studio 2019

c# - 从十进制数中删除小数点

c# - 如何从存储过程中获取 SQL 字符串结果并将其保存在 C# Windows 应用程序字符串变量中

c# - ASP.NET : How to deny a page to be accesed by users and set permissions?

javascript - 如何解决此 WCF/AJAX 问题? (访问数据库时出现 400 Bad Request 错误)

asp.net-mvc - 遍历集合并在 Razor 中打印索引和项目

c# - 无法列出从 SQL 到 MVC View 的表

c# - ActionFilterAttribute - 适用于特定 Controller 类型的操作