(四)毛子整洁架构(Presentation层/Authentiacation/Authorization)

news2025/5/12 0:07:14

文章目录

  • 项目地址
  • 一、Presentation 层
    • 1.1 数据库migration
      • 1. 添加数据库连接字符串
      • 2. 创建自动Migration/Seed
      • 3.修改Entity添加private 构造函数
      • 4. 执行迁移
    • 1.2 全局错误处理中间件
    • 1.3 Controller 添加
      • 1. Apartments
      • 2. Bookings
      • 3. 测试
  • 二、Authentiacation
    • 2.1 添加Keycloak服务
      • 1. 配置docker-compose
      • 2. 添加Client
      • 3. 测试服务
    • 2.2 生成jwt
      • 1. 添加Jwt服务
      • 2. 创建AuthenticationOptions
      • 3. 配置JwtBearerOptions
      • 4. 测试
    • 2.3 创建注册Controller
      • 1. 创建Command
      • 2. 注册使用的接口IAuthenticationService
      • 3. 修改User实体
      • 4. 创建Handler
      • 5. 创建Controller
    • 2.4 实现Jwt服务
    • 2.5 创建User表
    • 2.6 创建登录
      • 1. 创建登录的Command
      • 2. Handler
      • 3. Jwt Service 创建
      • 4. 创建Login Controller
      • 5. 测试
  • 三、Authorization
    • 3.1 添加权限
      • 1. 添加me的controller
      • 2. 创建角色表
      • 3. 给User实例添加角色列表
      • 4. 修改Repository
      • 5. 测试
    • 3.2 添加属性控制权限


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、Presentation 层

在这里插入图片描述

1.1 数据库migration

1. 添加数据库连接字符串

2. 创建自动Migration/Seed

3.修改Entity添加private 构造函数

  1. 出现错误
    在这里插入图片描述
  2. 给Entity添加私有构造器解决

4. 执行迁移

  • 执行迁移
    在这里插入图片描述

1.2 全局错误处理中间件

1.3 Controller 添加

1. Apartments

2. Bookings

3. 测试

在这里插入图片描述

二、Authentiacation

56-70

在这里插入图片描述

2.1 添加Keycloak服务

1. 配置docker-compose

2. 添加Client

  • 这里我们通过json已经导入

3. 测试服务

2.2 生成jwt

1. 添加Jwt服务

  1. 添加授权和鉴权的中间件在program.cs

在这里插入图片描述

  1. 安装jwt包

  2. 添加服务

2. 创建AuthenticationOptions

  1. 用于配置JWT选项

  2. appsettings.json里,将该选项需要的字段

3. 配置JwtBearerOptions

  • 将AuthenticationOptions绑定

4. 测试

  1. 给之前需要认证的Controller添加认证
  2. 使用Post man,发现需要认证才可以

2.3 创建注册Controller

1. 创建Command

2. 注册使用的接口IAuthenticationService

3. 修改User实体

  • 添加身份识别ID和设置ID的方法

4. 创建Handler

5. 创建Controller

2.4 实现Jwt服务

2.5 创建User表

2.6 创建登录

1. 创建登录的Command

2. Handler

3. Jwt Service 创建

4. 创建Login Controller

5. 测试

  1. 在不登录情况下无法访问apartment接口

  2. 登录后,可以访问

在这里插入图片描述

三、Authorization

70-
在这里插入图片描述

3.1 添加权限

1. 添加me的controller

2. 创建角色表

3. 给User实例添加角色列表

  • 在创建User的时候,直接将角色添加到User表里

4. 修改Repository

  1. 自动添加角色

5. 测试

3.2 添加属性控制权限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2373527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K8S服务的请求访问转发原理

开启 K8s 服务异常排障过程前,须对 K8s 服务的访问路径有一个全面的了解,下面我们先介绍目前常用的 K8s 服务访问方式(不同云原生平台实现方式可能基于部署方案、性能优化等情况会存在一些差异,但是如要运维 K8s 服务,…

20250510解决NanoPi NEO core开发板在Ubuntu core22.04.3系统下适配移远的4G模块EC200A-CN的问题

1、h3-eflasher-friendlycore-jammy-4.14-armhf-20250402.img.gz 在WIN10下使用7-ZIP解压缩/ubuntu20.04下使用tar 2、Win32DiskImager.exe 写如32GB的TF卡。【以管理员身份运行】 3、TF卡如果已经做过会有3个磁盘分区,可以使用SD Card Formatter/SDCardFormatterv5…

Linux系统之----模拟实现shell

在前面一个阶段的学习中,我们已经学习了环境变量、进程控制等等一系列知识,也许有人会问,学这个东西有啥用?那么,今天我就和大家一起综合运用一下这些知识,模拟实现下shell! 首先我们来看一看我…

TCP黏包解决方法

1. 问题描述 TCP客户端每100ms发送一次数据,每次为16006字节的数据长度。由于TCP传输数据时,为了达到最佳传输效能,数据包的最大长度需要由MSS限定(MSS就是TCP数据包每次能够传输的最大数据分段),超过这个长度会进行自动拆包。也就是说虽然客户端一次发送16006字节数据,…

vue访问后端接口,实现用户注册

文章目录 一、后端接口文档二、前端代码请求响应工具调用后端API接口页面函数绑定单击事件,调用/api/user.js中的函数 三、参考视频 一、后端接口文档 二、前端代码 请求响应工具 /src/utils/request.js //定制请求的实例//导入axios npm install axios import …

Nginx性能调优与深度监控

目录 1更改进程数与连接数 (1)进程数 (2)连接数 2,静态缓存功能设置 (1)设置静态资源缓存 (2)验证静态缓存 3,设置连接超时 4,日志切割 …

如何在大型项目中解决 VsCode 语言服务器崩溃的问题

在大型C/C项目中,VS Code的语言服务器(如C/C扩展)可能因内存不足或配置不当频繁崩溃。本文结合系统资源分析与实战技巧,提供一套完整的解决方案。 一、问题根源诊断 1.1 内存瓶颈分析 通过top命令查看系统资源使用情况&#xff…

AutoDL实现端口映射与远程连接AutoDL与Pycharm上传文件到远程服务器(李沐老师的环境)

文章目录 以上配置的作用前提AutoDL实现端口映射远程连接AutoDLPycharm上传文件到远程服务器以上配置的作用 使用AutoDL的实例:因本地没有足够强的算力,所以需要使用AutoDL AutoDL端口映射:当在实例上安装深度学习的环境,但因为实例的linux系统问题,无法图形化显示d2l中的文件…

13.thinkphp的Session和cookie

一.Session 1. 在使用Session之前,需要开启初始化,在中间件文件middleware.php; // Session 初始化 \think\middleware\SessionInit::class 2. TP6.0不支持原生$_SESSION的获取方式,也不支持session_开头的函数&…

多线程获取VI模块的YUV数据

一.RV1126 VI模块采集摄像头YUV数据的流程 step1:VI模块初始化 step2:启动VI模块工作 step3:开启多线程采集VI数据并保存 1.1初始化VI模块: VI模块的初始化实际上就是对VI_CHN_ATTR_S的参数进行设置、然后调用RK_MPI_VI_SetC…

[ctfshow web入门] web68

信息收集 highlight_file被禁用了,使用cinclude("php://filter/convert.base64-encode/resourceindex.php");读取index.php,使用cinclude("php://filter/convert.iconv.utf8.utf16/resourceindex.php");可能有些乱码,不…

16前端项目----交易页

交易 交易页Trade修改默认地址商品清单reduce计算总数和总价应用 统一引入接口提交订单 交易页Trade 在computed中mapState映射出addressInfo和orderInfo&#xff0c;然后v-for渲染到组件当中 修改默认地址 <div class"address clearFix" v-for"address in …

2003-2020年高铁线路信息数据

2003-2020年高铁线路信息数据 1、时间&#xff1a;2003-2020年 2、来源&#xff1a;Chinese High-speed Rail and Airline Database&#xff0c;CRAD 3、指标&#xff1a;高铁线路名称、起点名、终点名、开通时间、线路长度(km)、设计速度(km/h&#xff09;、沿途主要车站 …

MySQL COUNT(*) 查询优化详解!

目录 前言1. COUNT(*) 为什么慢&#xff1f;—— InnoDB 的“计数烦恼” &#x1f914;2. MySQL 执行 COUNT(*) 的方式 (InnoDB)3. COUNT(*) 优化策略&#xff1a;快&#xff01;准&#xff01;狠&#xff01;策略一&#xff1a;利用索引优化带 WHERE 子句的 COUNT(*) (最常见且…

nginx配置协议

1. 7层协议 OSI&#xff08;Open System Interconnection&#xff09;是一个开放性的通行系统互连参考模型&#xff0c;他是一个定义的非常好的协议规范&#xff0c;共包含七层协议。直接上图&#xff0c;这样更直观些&#xff1a; 1.1 协议配置 1.1.1 7层配置 这里我们举例…

UE5 PCG学习笔记

https://www.bilibili.com/video/BV1onUdY2Ei3/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 一、安装PCG 插件里选择以下进行安装 移动目录后&#xff0c;可以使用 Update Redirector References&#xff0c;更新下&#xff0…

《用MATLAB玩转游戏开发》打砖块:向量反射与实时物理模拟MATLAB教程

《用MATLAB玩转游戏开发&#xff1a;从零开始打造你的数字乐园》基础篇&#xff08;2D图形交互&#xff09;-《打砖块&#xff1a;向量反射与实时物理模拟》MATLAB教程 &#x1f3ae; 文章目录 《用MATLAB玩转游戏开发&#xff1a;从零开始打造你的数字乐园》基础篇&#xff08…

vue配置代理解决前端跨域的问题

文章目录 一、概述二、报错现象三、通过配置代理来解决修改request.js中的baseURL为/api在vite.config.js中增加代理配置 四、参考资料 一、概述 跨域是指由于浏览器的同源策略限制&#xff0c;向不同源(不同协议、不同域名、不同端口)发送ajax请求会失败 二、报错现象 三、…

java+vert.x实现内网穿透jrp-nat

用java vert.x开发一个内网穿透工具 内网穿透概述技术原理常见内网穿透工具用java vert.x开发内网穿透工具 jrp-nat为什么用java开发内网穿透工具&#xff1f;jrp-nat功能实现图解jrp-nat内网穿透工具介绍jrp-nat内网穿透工具特点jrp-nat软件架构jrp-nat安装教程jrp-nat程序下载…

【程序员AI入门:应用开发】8.LangChain的核心抽象

一、 LangChain 的三大核心抽象 1. ChatModel&#xff08;聊天模型&#xff09; 核心作用&#xff1a;与大模型&#xff08;如 GPT-4、Claude&#xff09;交互的入口&#xff0c;负责处理输入并生成输出。关键功能&#xff1a; 支持同步调用&#xff08;model.invoke&#xf…