目錄
- 模組拆分
- 環境配置
- 預設使用者
- 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) 。