.NET 雲原生架構師訓練營(許可權系統 系統演示 ActionAccess)--學習筆記

MingsonZheng發表於2022-02-22

目錄

  • 模組拆分
  • 環境配置
  • 預設使用者
  • ActionAccess

模組拆分

環境配置

  • mysql
  • migration

mysql

docker pull mysql
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root@dotnetnb666 -d mysql
  • name:容器名,此處命名為mysql
  • e:配置資訊,此處配置mysql的root使用者的登陸密碼
  • p:埠對映,此處對映 主機3306埠 到 容器的3306埠
  • d:後臺執行容器,保證在退出終端後容器繼續執行

migration

切換到 refactor 分支

PM> Install-Package Microsoft.EntityFrameworkCore.Tools
PM> Update-Package Microsoft.EntityFrameworkCore.Tools
PM> Get-Help about_EntityFrameworkCore
PM> Update-Database -Context DotNetNBIdentityDbContext
PM> Update-Database -Context ApplicationDbContext

預設使用者

在配置檔案 appsettings.json 中設定預設使用者

  • Username:admin
  • Password:Pa$$word666
"IdentityData": {
"Roles": [
  {
    "Name": "admin"
  }
],
"Users": [
  {
    "Username": "admin",
    "Password": "Pa$$word666",
    "Email": "MingsonZheng@outlook.com",
    "Roles": [
      "admin"
    ],
    "Claims": [
      {
        "Type": "name",
        "Value": "admin"
      }
    ]
  }
]
},

ActionAccess

完成環境配置之後,將專案 DotNetNB.WebApplication 設定為啟動專案,啟動之後可以看到 swagger 文件

請求 WeatherForecast 介面,返回 403 未授權,需要新增許可權

https://localhost:7018/WeatherForecast

請求 Resource 介面獲取 WeatherForecast 介面的 key 為 WeatherForecast-Get-GET

https://localhost:7018/Resource

為 WeatherForecast 介面 建立一個 permission

https://localhost:7018/Permission

引數

{
  "key": "weather",
  "group": "weather",
  "displayName": "weather",
  "description": "weather related api",
  "resources": [
    "WeatherForecast-Get-GET"
  ]
}

檢視所有 permission,可以看到剛剛建立的 permission

https://localhost:7018/Permission

將 permission 賦值給 admin 使用者

https://localhost:7018/Permission/addtouser?username=admin&permission=weather

檢視 admin 使用者的 permission

https://localhost:7018/Permission/user/admin

登入 admin 使用者獲取 token

https://localhost:7018/Authentication/login

使用 token 請求 WeatherForecast 介面,可以拿到返回

https://localhost:7018/WeatherForecast

賦權之後需要重新登入,獲取新的 token,因為新的 token 才會包含新賦值的許可權

GitHub原始碼連結:

https://github.com/MingsonZheng/dotnetnb.security refactor 分支

課程連結

https://appsqsyiqlk5791.h5.xiaoeknow.com/v1/course/video/v_5f39bdb8e4b01187873136cf?type=2

知識共享許可協議

本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。

歡迎轉載、使用、重新發布,但務必保留文章署名 鄭子銘 (包含連結: http://www.cnblogs.com/MingsonZheng/ ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。

如有任何疑問,請與我聯絡 (MingsonZheng@outlook.com) 。

相關文章