我正在嘗試創建一個ClaimsAuthorizationManager
實現,這看起來非常簡單。但是,由於我的MVC應用程序使用區域,因此AuthorizationContext
對象的資源屬性(作爲CheckAccess
方法的參數接收)未提供有關我的資源的足夠信息。在聲明authroization中包括區域名稱資源標識符
我正在尋找某種方式來指示在控制器或區域級別的資源描述,而無需修飾每個操作方法。我試圖向控制器添加[ClaimsPrincipalPermission(SecurityAction.Demand, Resource = "MyResourceName")]
,但由於缺少Operation
值,導致出現異常。我希望實現分層級聯設置。例如,所有的ActionMethods都會使用屬性中定義的資源,並使用默認的操作標識機制。
有沒有我在這裏失蹤的東西?是否有框架或Thinktecture.IdentityModel助手實用程序來完成此?有沒有機會註冊一個自定義的AuthorizationContent生成器類?
謝謝!
感謝您的答覆,布洛克。我在最初的研究中確實找到了這篇文章。我也拉了Thinktecture.IdentityModel 3.6.1。並將ClaimsAuthorizeAttribute註冊爲全局過濾器。但是,從我所知道的情況來看,這並不包含有關索賠中該區域的任何信息。是否建議定義方法級'ClaimAuthorize'裝飾品?有什麼方法可以覆蓋'AuthorizationContext'的'Resource'值嗎? –
檢查我是否可以修飾控制器,然後根據需要爲操作方法添加更多細化的授權屬性。 ClaimsAuthorizationManager.CheckAccess對於每個ClaimsAuthroize實例似乎都被調用一次:在這種情況下,全局過濾器,控制器和操作。它看起來似乎Thinktecture.IdentityModel允許我以最小的配置在區域內實施索賠。本來不錯的是區域特定的資源標識符模板或類似的東西。只是在說' ;) –