.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记
目录
- 模块拆分
- 环境配置
- 默认用户
- 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) 。
.NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记的更多相关文章
- .NET 云原生架构师训练营(建立系统观)--学习笔记
目录 目标 ASP .NET Core 什么是系统 什么是系统思维 系统分解 什么是复杂系统 作业 目标 通过整体定义去认识系统 通过分解去简化对系统的认识 ASP .NET Core ASP .NE ...
- .NET 云原生架构师训练营(对象过程建模)--学习笔记
目录 UML OPM OPM优化 UML 1997年发布UML标准 主要域 视图 图 主要概念 结构 静态视图 类图 类.关联.泛化.依赖关系.实现.接口 用例视图 用例图 用例.参与者.关联.扩展. ...
- .NET 云原生架构师训练营(设计原则&&设计模式)--学习笔记
目录 设计原则 设计模式 设计原则 DRY (Don't repeat yourself 不要重复) KISS (Keep it stupid simple 简单到傻子都能看懂) YAGNI (You ...
- .NET 云原生架构师训练营(责任链模式)--学习笔记
目录 责任链模式 源码 责任链模式 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无需关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了 何时使用:在处理 ...
- .NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记
目录 什么是软件架构 软件架构的基本思路 单体向分布式演进.云原生.技术中台 1.1 什么是软件架构 1.1.1 什么是架构? Software architecture = {Elements, F ...
- .NET 云原生架构师训练营(权限系统 RGCA 架构设计)--学习笔记
目录 项目核心内容 实战目标 RGCA 四步架构法 项目核心内容 无代码埋点实现对所有 API Action 访问控制管理 对 EF Core 实体新增.删除.字段级读写控制管理 与 Identity ...
- .NET 云原生架构师训练营(设计原则与模式)--学习笔记
在复杂系统的架构设计中引入设计原则与模式,能够极大降低复杂系统开发.和维护的成本 目录 几个问题 为什么要学习设计模式 优良架构设计的具体指标 理解复杂系统 面向对象思想(指导复杂系统的分析.设计.实 ...
- .NET 云原生架构师训练营(权限系统 RGCA 开发任务)--学习笔记
目录 目标 模块拆分 OPM 开发任务 目标 基于上一讲的模块划分做一个任务拆解,根据任务拆解实现功能 模块拆分 模块划分已经完成了边界的划分,边界内外职责清晰 OPM 根据模块拆分画出 OPM(Ob ...
- .NET 云原生架构师训练营(权限系统 代码实现 ActionAccess)--学习笔记
目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...
- .NET 云原生架构师训练营(权限系统 代码实现 Identity)--学习笔记
目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...
随机推荐
- HDU分拆素数和
https://acm.hdu.edu.cn/showproblem.php?pid=2098 时间复杂度 #include<bits/stdc++.h> using namespace ...
- 学习Flutter从0开始
一. 认识Flutter 1.1. 什么是Flutter 先看看官方的解释: Flutter is Google's UI toolkit for building beautiful, native ...
- h5跳转高德地图
<a href="https://uri.amap.com/marker?position=经度,纬度&name=所在的位置名称">高德地图</a>
- 在pyqt5中展示pyecharts生成的图像
技术背景 虽然现在很少有人用python去做一些图形化的界面,但是不得不说我们在日常大部分的软件使用中都还是有可视化与交互这样的需求的.因此pyqt5作为一个主流的python的GUI框架地位是非常重 ...
- k8s的应用包管理工具helm的部署和使用
1.概述 我们一般是在k8s里面部署一些简单的应用,比如用deployment,daemonset,statefuleset的方式来部署应用,但是如果要部署一些复杂的应用,那么整个配置的编写.部署的过 ...
- dgv 自动换行
//设置自动换行 dgv.DefaultCellStyle.WrapMode = DataGridViewTriState.True; //设置自动调整高度 dgv.AutoSizeRowsMode ...
- Collection的使用
常用方法 Modifier and Type Method and Description boolean add(E e) 确保此集合包含指定的元素(可选操作). boolean addAll(Co ...
- golang中的tcp编程
1. tcp server package main import ( "bufio" "fmt" "net" ) func main() ...
- 关于new Date总结及注意事项
记录关于 new Date() 的一些常用方法及问题 new Date()基本方法: 创建一个日期对象的几种方法 注意: 由于浏览器差异和不一致性,强烈建议不要使用Date构造函数(和Date.par ...
- 写react项目需要注意的
key应该是稳定的,且唯一的,尽量不要用索引作为key 都知道React组件渲染列表时需要为每个列表元素分配一个在列表中独一无二的key,key可以在DOM中的某些元素被增加或删除视乎帮助React识 ...