目录


  • 模块拆分
  • 环境配置
  • 默认用户
  • ActionAccess

模块拆分

.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记_ide

环境配置


  • 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 文档

.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记_mysql_02

.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记_ide_03

请求 WeatherForecast 接口,返回 403 未授权,需要添加权限

https://localhost:7018/WeatherForecast

.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记_环境配置_04

请求 Resource 接口获取 WeatherForecast 接口的 key 为 WeatherForecast-Get-GET

https://localhost:7018/Resource

.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记_环境配置_05

为 WeatherForecast 接口 创建一个 permission

https://localhost:7018/Permission

参数

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

.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记_ide_06

查看所有 permission,可以看到刚刚创建的 permission

https://localhost:7018/Permission

.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记_mysql_07

将 permission 赋值给 admin 用户

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

.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记_ide_08

查看 admin 用户的 permission

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

.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记_mysql_09

登录 admin 用户获取 token

https://localhost:7018/Authentication/login

.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记_环境配置_10

使用 token 请求 WeatherForecast 接口,可以拿到返回

https://localhost:7018/WeatherForecast

.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记_环境配置_11

赋权之后需要重新登录,获取新的 token,因为新的 token 才会包含新赋值的权限

GitHub源码链接:

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


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 ,不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。