ShenNiusModularity项目源码学习(15:ShenNius.Admin.API项目分析)

ops/2025/3/1 6:24:18/

  ShenNius.Admin.Mvc项目是MVC模式的入口,ShenNius.Admin.Hosting项目是前后端分离模式的后台服务入口,这两个项目都依赖ShenNius.Admin.API项目,前者使用ShenniusAdminApiModule类注册服务及配置管道,而后者的webapi实现都在ShenNius.Admin.API项目内,主要文件如下所示:
在这里插入图片描述
  ShenniusAdminApiModule文件在之前的文章中也提到过,主要用于注册服务、配置管道,前后端模式下采用JWT身份认证,MVC模式下采用基于Cookie的身份认证,通过入口项目的appsettings.json中JwtSetting:IsEnable配置的,除此之外,还注册SignalR、SqlSugar、AutoMapper、NewtonsoftJson等第三方或自定义组件或服务。
  AutomapperProfile文件定义实体类的映射关系,并在上一段的文件中使用Services.AddAutoMapper(typeof(AutomapperProfile))注册服务。
  Jwt文件夹保存与JWT身份认证相关的类定义,其中:
  1)AuthorizationExtension文件定义扩展函数注册及配置JWT服务,便于在ShenniusAdminApiModule文件中调用;
  2)ApiResponseHandler文件自定义认证操作类,用于在认证失败时(HandleChallengeAsync、HandleForbiddenAsync)返回格式统一的结果(ApiResult),该类在AuthorizationExtension文件的注册JWT服务时使用;
  3)JwtSetting文件保存JWT相关的配置,包括密钥、颁发者、过期时间等,该类用于在项目启动时从appsettings.json中读取jwt配置;
  4)JwtHelper类基于JwtSetting配置生成token,主要在本项目的UserController.SignIn函数内用户身份认证后生成token。

在这里插入图片描述
  Controllers文件夹内保存的是前后端分离模式下CMS、商城、系统管理版块的控制器类,其中:
  1)ApiBaseController是非多租户模式的控制器基类,定义常见的增删改查函数实现,不过只有TenantController继承自该类,用于多租户管理;
  2)ApiTenantBaseController定义多租户模式的控制器基类,包含常见的增删改查、导出数据等函数实现,Cms下的控制器类基本都继承自该类;
  3)ApiControllerBase是Sys文件夹下的基类,最大的作用是定义默认的访问路由,Sys下的控制器类大多继承自该类。

在这里插入图片描述

序号控制器类说明所属文件夹
1AdvListController广告位管理控制器类Cms
2ArticleController文章管理控制器类Cms
3ColumnController栏目管理控制器类Cms
4KeywordController关键词管理控制器类Cms
5MessageController留言管理控制器类Cms
6AppUserAddressController客户地址管理控制器类Shop
7AppUserController客户管理控制器类Shop
8CategoryController商品分类管理控制器类Shop
9GoodsController商品管理控制器类Shop
10OrderController订单管理控制器类Shop
11ConfigController字典管理控制器类Sys
12LogsController日志管理控制器类Sys
13MenuController菜单管理控制器类Sys
14RecycleController回收站管理控制器类Sys
15RoleController角色管理控制器类Sys
16TenantController多租户管理控制器类Sys
17UserController用户管理控制器类Sys

参考文献:
[1]https://gitee.com/shenniu_code_group/shen-nius.-modularity


http://www.ppmy.cn/ops/162159.html

相关文章

ubuntu22.04安装docker engine

在Ubuntu 22.04上安装Docker Engine可以通过以下步骤完成: 更新系统包索引: sudo apt update安装必要的依赖包: 这些包允许apt通过HTTPS使用仓库。 sudo apt install -y apt-transport-https ca-certificates curl software-properties-commo…

基于反激电路的电池充放电均衡控制

基于反激电路的电池充放电均衡控制是一种高效的能量转移型主动均衡方法,适用于锂离子电池组等串联电池组的管理。以下从原理、拓扑结构、控制策略和设计要点进行详细分析: 一、基本原理 反激电路(Flyback Converter)是一种隔离型…

【Kubernetes】API server 限流 之 maxinflight.go

这个文件实现了一个基于信号量(Channel)的简单限流器。 基础知识 总共有四种channel 带缓冲的channel nonMutatingChan、mutatingChan 都是带缓冲的channel ,这类channel 的特点是: 这允许最多 mutatingLimit /nonMutatingLimit 个请求同时获取令牌并执…

GPT-4.5 怎么样?如何升级使用ChatGPTPlus/Pro? GPT-4.5设计目标是成为一款非推理型模型的巅峰之作

GPT-4.5 怎么样?如何升级使用ChatGPTPlus/Pro? GPT-4.5设计目标是成为一款非推理型模型的巅峰之作 今天我们来说说上午发布的GPT-4.5,接下来我们说说GPT4.5到底如何,有哪些功能?有哪些性能提升?怎么快速使用到GPT-4.…

探索 Hutool - JSON:高效的 JSON 处理利器

各位开发者们,咱今天来好好聊聊在 Java 开发里特别实用的一个工具——Hutool - JSON。在现代的软件开发中,JSON(JavaScript Object Notation)已经成为了数据交换的标准格式之一,无论是前后端交互,还是与第三…

SpringCloud之Eureka、Ribbon、OpenFeign

目录1. SpringCloud Eureka(服务注册与发现组件)2. SpringCloud Ribbon(负载均衡与服务调用组件)3. SpringCloud OpenFeign(负载均衡与服务调用组件)SpringCloud:用于开发高度可扩展、高性能的分…

浅谈流媒体协议以及视频编解码

流媒体协议介绍 流媒体协议用于传输视频、音频等多媒体数据,确保数据流畅地传输到用户设备。常见的流媒体协议包括 RTMP、HLS、DASH、WebRTC 等,每种协议具有不同的特点和适用场景。 1. RTMP (Real-Time Messaging Protocol) 定义:由 Adob…

Linux中常见命令使用

Linux命令,本质是一个二进制可执行程序,与Windows系统中的.exe文件是一个意思 ls -l -l看到的信息,开始是d,说明是文件夹,开始是-,则是文件w -h让文件大小更人性化的显示 文件操作命令 touch 创建文件…