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下的控制器类大多继承自该类。
序号 | 控制器类 | 说明 | 所属文件夹 |
---|---|---|---|
1 | AdvListController | 广告位管理控制器类 | Cms |
2 | ArticleController | 文章管理控制器类 | Cms |
3 | ColumnController | 栏目管理控制器类 | Cms |
4 | KeywordController | 关键词管理控制器类 | Cms |
5 | MessageController | 留言管理控制器类 | Cms |
6 | AppUserAddressController | 客户地址管理控制器类 | Shop |
7 | AppUserController | 客户管理控制器类 | Shop |
8 | CategoryController | 商品分类管理控制器类 | Shop |
9 | GoodsController | 商品管理控制器类 | Shop |
10 | OrderController | 订单管理控制器类 | Shop |
11 | ConfigController | 字典管理控制器类 | Sys |
12 | LogsController | 日志管理控制器类 | Sys |
13 | MenuController | 菜单管理控制器类 | Sys |
14 | RecycleController | 回收站管理控制器类 | Sys |
15 | RoleController | 角色管理控制器类 | Sys |
16 | TenantController | 多租户管理控制器类 | Sys |
17 | UserController | 用户管理控制器类 | Sys |
参考文献:
[1]https://gitee.com/shenniu_code_group/shen-nius.-modularity