目录

  • 模块拆分
  • 环境配置
  • 默认用户
  • 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)--学习笔记的更多相关文章

  1. .NET 云原生架构师训练营(建立系统观)--学习笔记

    目录 目标 ASP .NET Core 什么是系统 什么是系统思维 系统分解 什么是复杂系统 作业 目标 通过整体定义去认识系统 通过分解去简化对系统的认识 ASP .NET Core ASP .NE ...

  2. .NET 云原生架构师训练营(对象过程建模)--学习笔记

    目录 UML OPM OPM优化 UML 1997年发布UML标准 主要域 视图 图 主要概念 结构 静态视图 类图 类.关联.泛化.依赖关系.实现.接口 用例视图 用例图 用例.参与者.关联.扩展. ...

  3. .NET 云原生架构师训练营(设计原则&&设计模式)--学习笔记

    目录 设计原则 设计模式 设计原则 DRY (Don't repeat yourself 不要重复) KISS (Keep it stupid simple 简单到傻子都能看懂) YAGNI (You ...

  4. .NET 云原生架构师训练营(责任链模式)--学习笔记

    目录 责任链模式 源码 责任链模式 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无需关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了 何时使用:在处理 ...

  5. .NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记

    目录 什么是软件架构 软件架构的基本思路 单体向分布式演进.云原生.技术中台 1.1 什么是软件架构 1.1.1 什么是架构? Software architecture = {Elements, F ...

  6. .NET 云原生架构师训练营(权限系统 RGCA 架构设计)--学习笔记

    目录 项目核心内容 实战目标 RGCA 四步架构法 项目核心内容 无代码埋点实现对所有 API Action 访问控制管理 对 EF Core 实体新增.删除.字段级读写控制管理 与 Identity ...

  7. .NET 云原生架构师训练营(设计原则与模式)--学习笔记

    在复杂系统的架构设计中引入设计原则与模式,能够极大降低复杂系统开发.和维护的成本 目录 几个问题 为什么要学习设计模式 优良架构设计的具体指标 理解复杂系统 面向对象思想(指导复杂系统的分析.设计.实 ...

  8. .NET 云原生架构师训练营(权限系统 RGCA 开发任务)--学习笔记

    目录 目标 模块拆分 OPM 开发任务 目标 基于上一讲的模块划分做一个任务拆解,根据任务拆解实现功能 模块拆分 模块划分已经完成了边界的划分,边界内外职责清晰 OPM 根据模块拆分画出 OPM(Ob ...

  9. .NET 云原生架构师训练营(权限系统 代码实现 ActionAccess)--学习笔记

    目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...

  10. .NET 云原生架构师训练营(权限系统 代码实现 Identity)--学习笔记

    目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...

随机推荐

  1. C# 10分钟完成百度翻译(机器翻译)——入门篇

    我们之前基于百度ai开发平台实现了人脸识别 [1].文字识别 [2].语音识别 [3] 与合成的入门和进阶,今天我们来实现百度翻译的实现. 随着"一带一路"政策的开展,各种项目迎接 ...

  2. Typora+PicGo-Core实现图片自动上传gitee图床

    说明: 使用gitee作为图床: 客户机为Mac M1: Typora版本:1.0.2 (5990). gitee配置步骤 需要拥有一个gitee账号,创建一个公有仓库用于存储图片,然后需要生成一个t ...

  3. Bootstrap实战 - 响应式布局

    一.介绍 响应式布局就是一个网站能够兼容多个终端,而不是为每个终端做一个特定的版本.这个概念是为解决移动互联网浏览而诞生的. 导航栏与轮播在大部分网站的头部占很高的比重,特别是导航栏,扮演着网站地图的 ...

  4. MySQL索引失效的常见场景

    当然请记住,explain是一个好习惯! MySQL索引失效的常见场景 在验证下面的场景时,请准备足够多的数据量,因为数据量少时,MySQL的优化器有时会判定全表扫描无伤大雅,就不会命中索引了. 1. ...

  5. 2022GDUT寒训专题一C题

    题目 题面 马在中国象棋以日字形规则移动. 请编写一段程序,给定n×m大小的棋盘,以及马的初始位置 (x, y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. 输入格式 ...

  6. 实习之bii--在vsphere client 给esxi上的虚拟机增加U盘识别

    esxi上安装虚拟机默认不包含U盘控制器,在服务器上插U盘也不会识别,所以要通过客户端登陆esxi管理为虚拟机增加U盘控制器,步骤如下: 1.首先登陆服务器的管理ip 2.选择一部虚拟机,进行编辑设置 ...

  7. servlet单例模式以及servlet的请求流程

    ​ 目录 一.servlet 单例模式: 二.servlet的请求流程: ★ 流程: ★ 详细过程如下: 一.servlet 单例模式: tomcat服务器,通过Java的反射机制来自动调用servl ...

  8. Java里的new

    java里的new的英文意思就是"新的"的意思.在JAVA里就是创建一个新的实例,或者说一个新的对象,一个普通类在没有实例化之前,就是new之前,它的属性,方法等等在内存中都是不存 ...

  9. linux计划任务之at

    at是单次的计划任务 1.首先安装at yum -y install at 2.开启atd服务 systemctl start atd systemctl enabled atd 3.常用命令 -m ...

  10. push自定义动画

    // //  ViewController.m //  ViewControllerAnimation // //  Created by mac on 15/5/26. //  Copyright ...