簡體   English   中英

ASP.Net Core 2.1中的自定義授權篩選器與策略

[英]Custom Authorization Filter vs Policy in ASP.Net Core 2.1

我正在設計一個新的ASP.Net CORE 2.1 WebAPI,並且試圖找出實現適合我們需求的授權系統的最佳方法。 我們的角色和權限是數據庫驅動的,可以混合和匹配基於角色的權限和單個資源權限。 因此,對於給定的端點,默認訪問權限可能是基於角色的(例如,僅針對Admin),但是管理員也可以為單個用戶分配對該端點的訪問權限(或相反的權限;並撤消對該角色否則授予的特定資源的訪問權限)。 結果,每個端點授權都需要一個數據庫查詢來確定對該資源的有效訪問。 在我看來,這里需要自定義授權過濾器,但是許多MS文檔和其他資源會推送基於策略的身份驗證,並建議不要“自行滾動”。 我看不到基於策略的解決方案在這里如何工作,因為它基於靜態策略聲明。 是否可以通過政策滿足我們的需求,或者自定義身份驗證過濾器是可行的方式?

策略身份驗證是必經之路。 是的,它可能基於某種“靜態”策略,即,多個操作/控制器最終可能會使用類似[Authorize(Policy = "MyPolicy")] ,但是策略本身不是靜態的。 您可以在策略處理程序中定義任意數量的條件。 您也可以混合搭配。 因此,如果說某事僅對“ Foo”角色可用,但是您還需要由“ Bar”策略定義的對象級別權限,則您肯定會做類似[Authorize(Roles = "Foo", Policy = "Bar")]

暫無
暫無

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

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