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

2022-03-22 16:19:17 浏览数 (1)

学习分享 丨作者 /

这是DotNet NB 公众号的第194篇原创文章

目录

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

模块拆分

环境配置

  • mysql
  • migration

mysql

代码语言:javascript复制
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 分支

代码语言:javascript复制
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
代码语言:javascript复制
"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 未授权,需要添加权限

代码语言:javascript复制
https://localhost:7018/WeatherForecast

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

代码语言:javascript复制
https://localhost:7018/Resource

为 WeatherForecast 接口 创建一个 permission

代码语言:javascript复制
https://localhost:7018/Permission

参数

代码语言:javascript复制
{
  "key": "weather",
  "group": "weather",
  "displayName": "weather",
  "description": "weather related api",
  "resources": [
    "WeatherForecast-Get-GET"
  ]
}

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

代码语言:javascript复制
https://localhost:7018/Permission

将 permission 赋值给 admin 用户

代码语言:javascript复制
https://localhost:7018/Permission/addtouser?username=admin&permission=weather

查看 admin 用户的 permission

代码语言:javascript复制
https://localhost:7018/Permission/user/admin

登录 admin 用户获取 token

代码语言:javascript复制
https://localhost:7018/Authentication/login

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

代码语言:javascript复制
https://localhost:7018/WeatherForecast

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

GitHub源码链接:

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

0 人点赞