簡體   English   中英

帶參數的ASP.NET MVC Authorize屬性

[英]ASP.NET MVC Authorize attribute with a parameter

我開始裝飾我的控制器類

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

將該顯式字符串更改為從數據庫收集角色分配的參數的最佳方法是什么,從而使角色分配具有靈活性,而Admin區域可以放在首位。

例如說,為了論證我有三個角色

  • 只讀
  • 讀和寫
  • 管理員

我想將這些角色映射到多個AD組

例如

  • 只讀-> DOMAIN \\ Group1,DOMAIN \\ Group2,DOMAIN \\ Group3
  • ReadandWrite-> 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);
    }
}

創建您自己的角色提供程序 ,該提供程序根據當前用戶的AD角色返回ReadOnly等角色的列表。 然后,您可以使用Authorize屬性代替引用這些角色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM