目录
- 模块拆分
- 环境配置
- 默认用户
- 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": "[email protected]",
"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/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
如有任何疑问,请与我联系 ([email protected]) 。