学习分享 丨作者 / 郑 子 铭
这是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
"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 分支