.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 分支 课程链接 https://appsqsyiqlk5791.h5.xiaoeknow.com/v1/course/video/v_5f39bdb8e4b01187873136cf?type=2 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。 如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。