簡體   English   中英

為什么我們需要 OperationAuthorizationRequirement 在 ASP.NET Core 中進行基於資源的授權?

[英]Why do we need OperationAuthorizationRequirement for resource-based authorization in ASP.NET Core?

我正在 docs.microsoft.com 上閱讀ASP.NET Core 中基於資源的授權,但我對檢查文檔作者所需的復雜性感到困惑。

在這個例子中,我們需要創建OperationsDocumentAuthorizationCrudHandler類,在Startup 中注冊 DI,調用並等待AuthorizeAsync然后執行檢查。

無需在 4 個文件中編寫 30 行代碼,我們只需一行代碼即可完成所有工作

if (User.Identity?.Name == Document.Author) return Page();

如果我們希望能夠重用它,我們可以將它提取到一個方法中,但它仍然是一個不那么復雜的解決方案。

單行解決方案有什么問題還是我遺漏了什么?

編輯:

澄清我的問題 - 有沒有具體的例子,為什么最好為資源授權實現 AuthorizationHandler 和 OperationAuthorizationRequirement 而不是簡單的檢查? 我真的很好奇有什么好處,因為我更喜歡簡單的解決方案,但我擔心將來我會遇到一些已經被 AuthorizationHandler/OperationAuthorizationRequirement 覆蓋的情況。

正如文檔所說, OperationsDocumentAuthorizationCrudHandler類使您能夠為每個操作類型編寫單個處理程序而不是單個類。

如果我們希望能夠重用它,我們可以將它提取到一個方法中,但它仍然是一個不那么復雜的解決方案。

推薦的基於資源的授權使用DI,可以更清晰和強大,而不是到處重復if/else代碼。

此外,我們還可以在自定義授權處理程序中處理不同的狀態代碼(401,403...)。我們可以在視圖或 blazor razor 組件中使用IAuthorizationService

暫無
暫無

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

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