.NET云原生架构师训练营权限系统演示ActionAccess,如何深入理解其核心原理?

摘要:目录 模块拆分 环境配置 默认用户 ActionAccess 模块拆分 环境配置 mysql migration mysql docker pull mysql docker run -p 3306:3306 --name mysql -e
目录 模块拆分 环境配置 默认用户 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 分
阅读全文