若要在 ASP.NET Core 8 中使用授權,您可以參考一些資源和最佳實務。
基於角色的授權:
- 使用該
[Authorize]
屬性可以根據使用者角色限制對控制器或操作的存取。例如,[Authorize(Roles = "Administrator")]
限制對「管理員」角色的使用者的存取。您也可以透過用逗號分隔來指定多個角色( Microsoft Learn )。 - 基於角色的檢查可以應用於控制器級別、操作級別,或使用基於策略的方法,其中策略
Program.cs
在應用程式啟動期間在文件中配置(Microsoft Learn )。
- 使用該
基於策略的授權:
AddAuthorization
透過在中的方法中註冊自訂策略來定義它們Program.cs
。策略可以包括角色要求、聲明要求或在授權處理程序中實現的自訂要求( Microsoft Learn )。- 例如,您可以建立一個要求使用者俱有「管理員」角色的策略:夏普
builder.Services.AddAuthorization(options => { options.AddPolicy("RequireAdministratorRole", policy => policy.RequireRole("Administrator")); });
- 可以使用
[Authorize(Policy = "RequireAdministratorRole")]
控制器或操作上的屬性來套用策略(Microsoft Learn )。
自訂授權處理程序:
- 實作自訂授權處理程序來處理更複雜的授權邏輯。這些處理程序評估需求並在配置期間在服務集合中註冊。例如,您可以建立一個
MinimumAgeHandler
強制執行基於年齡的要求( Microsoft Learn )。 - 呼叫處理程序來評估需求,並且可以成功、失敗或執行其他邏輯(例如日誌記錄)。
- 實作自訂授權處理程序來處理更複雜的授權邏輯。這些處理程序評估需求並在配置期間在服務集合中註冊。例如,您可以建立一個
播種角色和使用者:
- 使用ASP.NET Core Identity 中的
UserManager
和RoleManager
類別在應用程式中播種角色和使用者。這包括建立「管理員」和「使用者」等預設角色,並在應用程式啟動期間將這些角色指派給預設使用者(Better.NETDev )。
- 使用ASP.NET Core Identity 中的
Razor 頁面和授權:
- 對於 Razor Pages,
[Authorize]
可以將該屬性應用於 來PageModel
限制存取。但是,它不能應用於特定的處理程序方法。相反,請使用授權過濾器或單獨的頁面來滿足不同的授權要求(Microsoft Learn )。
- 對於 Razor Pages,
這些概念和範例將幫助您在 ASP.NET Core 8 應用程式中有效地實現授權。有關詳細指南和程式碼範例,官方 Microsoft Learn 文件是一個很好的參考資源( Microsoft Learn ) ( Microsoft Learn ) ( Microsoft Learn )。