ASP.NET Core策略授權和 ABP 授權
阿新 • • 發佈:2020-07-13
[TOC]
Github 倉庫原始碼地址 [https://github.com/whuanles/2020-07-12](https://github.com/whuanles/2020-07-12)
## ASP.NET Core 中的策略授權
首先我們來建立一個 WebAPI 應用。
然後引入 `Microsoft.AspNetCore.Authentication.JwtBearer` 包。
### 策略
Startup 類的 ConfigureServices 方法中,新增一個策略的形式如下:
```csharp
services.AddAuthorization(options =>
{
options.AddPolicy("AtLeast21", policy =>
policy.Requirements.Add(new MinimumAgeRequirement(21)));
});
```
這裡我們分步來說。
services.AddAuthorization 用於新增授權方式,目前只支援 AddPolicy。
ASP.NET Core 中,有基於角色、宣告、策略的三種授權形式,都是使用 `AddPolicy` 來新增授權處理。
其中,有兩個 API 如下:
```csharp
public void AddPolicy(string name, AuthorizationPolicy policy);
public void AddPolicy(string name, Action configurePolicy);
```
`name = "AtLeast21"`,這裡 "AtLeast21" 是策略的名稱。
`policy.Requirements.Add()` 用於新增一個策略的標記(儲存此策略的資料),此標記需要繼承 `IAuthorizationRequirement` 介面。
策略的名稱應該如何設定呢?在授權上應該如何編寫策略以及使用 `Requirements.Add()`?
這裡先放一放,我們接下來再講解。
### 定義一個 Controller
我們來新增一個 Controller :
```csharp
[ApiController]
[Route("[controller]")]
public class BookController : ControllerBase
{
private static List BookContent = new List();
[HttpGet("Add")]
public string AddContent(string body)
{
BookContent.Add(body);
return "success";
}
[HttpGet("Remove")]
public string RemoveContent(int n)
{
BookContent.Remove(BookContent[n]);
return "success";
}
[HttpGet("Select")]
public List