当前位置: 首页 > news >正文

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

  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

相关文章:

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

ShenNius.Admin.Mvc项目是MVC模式的入口,ShenNius.Admin.Hosting项目是前后端分离模式的后台服务入口,这两个项目都依赖ShenNius.Admin.API项目,前者使用ShenniusAdminApiModule类注册服务及配置管道,而后者的webapi实现都在ShenN…...

Express + MongoDB 实现文件上传

使用 multer 中间件来处理文件上传,同时将文件的元数据存储到 MongoDB 中。 一、安装依赖 npm install multer 二、核心代码 // 定义文件模型const fileSchema new mongoose.Schema({originalname: String,mimetype: String,size: Number,path: String,});cons…...

计算机毕业设计SpringBoot+Vue.js作业管理系统(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

Odoo免费开源CRM技术实战:从商机线索关联转化为售后工单的应用

文 / 开源智造 Odoo金牌服务 Odoo:功能强大且免费开源的CRM Odoo 引入了一种高效的客户支持管理方式,即将 CRM 线索转换为服务台工单。此功能确保销售和支持团队能够无缝协作,从而提升客户满意度并缩短问题解决时间。通过整合 CRM 模块与服…...

2025年如何实现安卓、iOS、鸿蒙跨平台开发

2025年如何实现安卓、iOS、鸿蒙跨平台开发 文章目录 2025年如何实现安卓、iOS、鸿蒙跨平台开发1. 使用统一开发框架2. 华为官方工具链支持3. 代码适配策略4. 生态兼容性处理5. 性能与体验优化总结:方案选择建议 本文首发地址 https://h89.cn/archives/324.html 最新…...

萌新学 Python 之 os 模块

os 模块:主要提供程序与操作系统进行交互的接口 先导入模块:import os 1. os.listdir(),获取当前目录的文件,返回到列表中 2. os.mkdir(文件目录, mode 0o777),创建目录,777 表示读写程序 在当前目录下…...

IPoIB源码深度解析:如何基于TCP/IP协议栈实现高性能InfiniBand通信

一、IPoIB的核心设计理念 IPoIB(IP over InfiniBand)是一种在InfiniBand网络上承载IP流量的技术,其核心目标是在不修改上层应用的前提下,利用InfiniBand的高带宽和低延迟特性。与自定义协议栈不同,IPoIB通过深度集成到Linux内核TCP/IP协议栈中,将InfiniBand设备抽象为标…...

本地部署阿里万象2.1文生视频模型(Wan2.1-T2V)完全指南

在生成式AI技术爆发式发展的今天,阿里云开源的万象2.1(Wan2.1)视频生成模型,为创作者提供了从文字/图像到高清视频的一站式解决方案。本文针对消费级显卡用户,以RTX 4060 Ti 16G为例,详解本地部署全流程与性能调优方案,涵盖环境配置、多模型选择策略、显存优化技巧及实战…...

information_schema.processlist 表详解

information_schema.processlist 表(或 SHOW PROCESSLIST; 命令)用于查看 MySQL 当前所有的连接进程,帮助管理员监控数据库活动并排查性能问题。以下是该表的字段及其具体含义: 🔹 information_schema.processlist 字段…...

P8623 [蓝桥杯 2015 省 B] 移动距离

P8623 [蓝桥杯 2015 省 B] 移动距离 题目 解析代码 题目 解析 完了完了T.T,这个题我做了20分钟 解题思路就是分组,但是编写的时候最好把边界值过一遍【题目提供的测试数据肯定是最好通过的数据,需要你自己过一遍特殊数据,然后再…...

2025年Linux主力系统选择指南:基于最新生态的深度解析(附2025年发行版对比速查表)

Linux发行版生态在2025年持续演进,既有经典系统的迭代升级,也有新兴项目的崛起。本文结合最新行业动态,从个人用户到企业场景,梳理主力系统选择策略,助你找到最适合的Linux发行版。 一、新手友好型:平滑过渡…...

[密码学实战]Java实现国密(SM2)密钥协商详解:原理、代码与实践

一、代码运行结果 二、国密算法与密钥协商背景 2.1 什么是国密算法? 国密算法是由中国国家密码管理局制定的商用密码标准,包括: SM2:椭圆曲线公钥密码算法(非对称加密/签名/密钥协商)SM3:密码杂凑算法(哈希)SM4:分组密码算法(对称加密)2.2 密钥协商的意义 在安全…...

015--基于STM32F103ZET6的智能风扇设计

1.实物视频演示 智能风扇演示视频 2.程序代码讲解 STM32F103ZET6智能风扇_哔哩哔哩_bilibili 3源代码获取 https://download.csdn.net/download/weixin_41011452/90440545...

基于YOLO11深度学习的遥感视角农田检测与分割系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

RBF神经网络+NSGAII多目标优化算法,工艺参数优化、工程设计优化(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.RBF神经网络NSGAII多目标优化算法(Matlab完整源码和数据) 多目标优化是指在优化问题中同时考虑多个目标的优化过程。在多目标优化中,通常存在多个冲突的目标,即改善一…...

Zookeeper(79)如何进行Zookeeper的监控?

对 Zookeeper 进行监控是确保其高可用性和性能的关键步骤。监控 Zookeeper 通常包括以下几个方面: 健康检查:检查 Zookeeper 节点是否在线。性能指标:监控关键性能指标,如请求延迟、事务处理量等。日志监控:监控 Zook…...

运动想象 (MI) 分类学习系列 (17) : CCSM-FT

运动想象分类学习系列:用于运动图像 EEG 信号解码的跨通道特定互特征迁移学习 0. 引言1. 主要贡献2. 方法2.1 跨通道特定互特征迁移学习 (CCSM-FT) 网络2.2 功能转移:2.3 特征转移2.4 参数选择3. 结果4. 分析4.1 训练技巧分析4.2 特征转移分析5. 总结欢迎来稿论文地址:http…...

start DL from stratch (2)!!!

start DL from stratch &#xff08;2&#xff09;!!! 一、CPU and GPUcpuGPU安培架构爱达洛夫莱斯架构 二、使用conda创建一个新的虚拟环境三、autodl操作先知Linux复习目录文件和数据上传对于整个镜像的操作守护进程Tips 四、autodl租用创建实例<big>没有所需要的版本的…...

【深入浅出:Core-JS Legacy 的降级兼容指南】

深入浅出&#xff1a;Core-JS Legacy 的降级兼容指南 &#x1f6e0;️ &#x1f30d; 背景与核心概念 为什么需要 Polyfill&#xff1f; 随着 ECMAScript 标准的快速迭代&#xff08;ES6/ES2015&#xff09;&#xff0c;现代浏览器对新特性的支持存在碎片化问题。旧版浏览器&am…...

通义灵码插件安装入门教学 - IDEA(安装篇)

在开发过程中&#xff0c;使用合适的工具和插件可以极大地提高我们的工作效率。今天&#xff0c;我们将详细介绍如何在 IntelliJ IDEA 中安装并配置通义灵码插件&#xff0c;这是一款旨在提升开发者效率的实用工具。无论你是新手还是有经验的开发者&#xff0c;本文都将为你提供…...

如何实现Karmada多集群编排:API Server与Controller Manager的终极协同架构指南

如何实现Karmada多集群编排&#xff1a;API Server与Controller Manager的终极协同架构指南 【免费下载链接】karmada Open, Multi-Cloud, Multi-Cluster Kubernetes Orchestration 项目地址: https://gitcode.com/GitHub_Trending/ka/karmada Karmada作为一款开源的多集…...

[特殊字符] 第30课:排序链表

想系统提升编程能力、查看更完整的学习路线&#xff0c;欢迎访问 AI Compass&#xff1a;https://github.com/tingaicompass/AI-Compass 仓库持续更新刷题题解、Python 基础和 AI 实战内容&#xff0c;适合想高效进阶的你。&#x1f4d6; 第30课&#xff1a;排序链表模块&#…...

FastAPI OpenAPI文档:从基础配置到高级定制的完整指南

FastAPI OpenAPI文档&#xff1a;从基础配置到高级定制的完整指南 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi 想要快速构建API并自…...

Go语言命名规则实战:从变量到包名的完整避坑指南

Go语言命名规则实战&#xff1a;从变量到包名的完整避坑指南 当你第一次接触Go语言时&#xff0c;可能会被它简洁的语法所吸引&#xff0c;但很快就会发现这门语言对命名有着近乎苛刻的要求。我至今还记得刚学Go时&#xff0c;因为一个包名的大小写问题调试了整个下午的经历。本…...

WebP图片处理全攻略:如何让Java的Thumbnails支持最新图片格式(含SPI机制解析)

WebP图片处理全攻略&#xff1a;Java生态下的高效解决方案与SPI机制深度解析 WebP作为Google推出的新一代图片格式&#xff0c;凭借其卓越的压缩效率和动画支持能力&#xff0c;正在逐步改变互联网图像存储与传输的格局。根据最新行业统计&#xff0c;采用WebP格式的网站平均可…...

罗技PUBG鼠标宏完整指南:终极无后坐力脚本配置方案

罗技PUBG鼠标宏完整指南&#xff1a;终极无后坐力脚本配置方案 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 在绝地求生游戏中&#xff0c;后坐…...

Ai2Psd架构解析:Adobe设计工具间矢量图层无损转换的技术实现方案

Ai2Psd架构解析&#xff1a;Adobe设计工具间矢量图层无损转换的技术实现方案 【免费下载链接】ai-to-psd A script for prepare export of vector objects from Adobe Illustrator to Photoshop 项目地址: https://gitcode.com/gh_mirrors/ai/ai-to-psd 在跨平台数字设计…...

别再只会调PID了!手把手教你用MATLAB/Simulink搞定直流电机双闭环调速(附R2018b模型)

从零构建直流电机双闭环调速系统的MATLAB实战指南 在工业自动化领域&#xff0c;直流电机调速系统一直是控制工程师的必修课。很多工程师虽然掌握了基本的PID控制原理&#xff0c;但在面对更复杂的双闭环系统时&#xff0c;常常陷入调参困境——明明按照教科书设置了参数&#…...

抖音无水印视频下载工具:5分钟快速上手完整指南

抖音无水印视频下载工具&#xff1a;5分钟快速上手完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…...

乙巳马年皇城大门春联生成终端W自动化脚本:使用Python批量生成节日海报

乙巳马年皇城大门春联生成终端W自动化脚本&#xff1a;使用Python批量生成节日海报 每到年底&#xff0c;市场部的小伙伴们就开始头疼。要给几百家门店、几十个合作客户定制春节宣传海报&#xff0c;每家都要有独特的、带点文化味儿的春联。以前要么是设计师一张张手动P图&…...