簡體   English   中英

ASP.NET身份動態角色授權

[英]ASP.NET Identity Dynamic Role Authorization

當我不熟悉ASP.NET Identity時,我正在觀看有關MVA的視頻,當傑里米·福斯特(Jeremy Foster)演示時提出了一個問題,即如何使以下內容動態化:

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

對此,亞當·蒂珀勒(Adam Tuliper)表示,可以通過某種方式使用Claims來完成,但是我在Internet上找不到任何具體的東西,或者我可能不太理解。 但是,如果有人可以向我展示如何做到這一點,我將不勝感激。

這很重要,因為以后,我可能希望允許另一個角色訪問SomeAction ,如果每次都需要重新編譯和部署我的應用程序,那將是不好的。 另外,我可以將控制權交給用戶,以更改其他類型用戶的訪問權限。

過去,我通過重寫Authorize屬性來做到這一點,在該屬性中,我從cookie中提取用戶的RoleId並從數據庫中檢查用戶是否有權訪問所請求的操作。 但不確定如何使用Claims來完成。

諸如此類的事情是什么:您可以將其與數據庫一起使用,或者僅在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);
        }
    }

暫無
暫無

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

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