手把手撸套框架-Victory框架1.1 详解
上一篇博客 Victory框架1.0 详解 有说道,1.0的使用过程中出现不少缺点,比如菜单不能折叠,权限没有权限组等等。
所以,我还是抽出时间在下班后,回到我的小黑屋里 完成了1.1的升级。 相比1.0 ,这次的1.1 有的大范围的改进。

Victory1.1 源码: https://github.com/demon28/Victory.Template1.1
核心的改进还是 RBAC-1, 这个在这篇文章中有写到: 手把手撸套框架-权限系统设计。 我之所以,单独保存1.0 也是因为1.0 是RBAC-0的5表设计,非常经典。
Victory 1.1 是RBAC-1 数了下有16张表,比较庞大。 但是功能也多了很多,比如 权限控制菜单,权限控制 用户组, 给用户组授权等。
大部分的理念和1.0没什么区别。这里说一下 上一篇讲解1.0 没有收到的几个点:
1,AppSetting.json 文件。 这个文件是必须要讲的:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DB": "EnvironDatabase", //当前使用数据库
"IsEncrypt": "false", //是否使用加密字符串
"ProductDatabase": "Data Source=120.77.211.84;Initial Catalog=YH.EAM; User Id=sa;Password=admin(123);Integrated Security=True;Pooling=true;Min Pool Size=1", //生产环境
"EnvironDatabase": "Data Source=134.175.23.180;Initial Catalog=YH.VictoryTemp; User Id=souy;Password=CH2DCV3P", //预投产环境
"DevelopDatabase": "O0yaiWNz+6MJ7tRdbE17BfLpHn8tWZ6jJ3aWScQ/a4WUdgAY6JY8mBWlmmaI069iWMfkEvNzD8ivY2wpY7wNArTjeBDKSwyVXnacduywF2E9yKUsKTnaazb0Cyhz40K4" //开发环境
},
"IgnoreAuthRight": "false", //是否忽略全局权限检查
"IsSetDefautlRole": "false", //是否给新登录的用户给一个默认用户权限
"IgnoreApiFilter": "false", //是否忽略API请求时的 参数签名
"IsExceptionFilter": "true", //是否取消全局异常捕捉
"Jwt": { //JWT 信息
"ApiKey": "58b59b3ae5d0ec0629950ebdd4dabe39",
"Issuer": "Near",
"Audience": "VueApp"
}
}
数据库我提倡开发一个项目必须有部署三个环境,一个是开发环境,可以公司内部拿一台服务器做一个局域网,这样就不用每个同事都装一个数据库服务端,大家开发过程中装一个客户端就行了。
然后项目 开发到第一个版本上线的时候,需要部署一个预投产环境,预投产环境与真实投产环境数据保持一致,这个是专门给测试人员使用的,无论是黑盒测试 还是 白盒测试,有个预投产则方便很多,
则不至于每次要测什么,都跑到真实环境上去测试。
最后投产环境就没什么好说的, 投产环境的数据库,不建议和应用放在同一台服务器上,放同一个内网的 数据库服务器即可,避免遇到类似中勒索病毒的情况。
这里有个值得一提的是,IsEncrypt,为true 的话标识,这个字符串是加密的,如果是加密的读取字符串的时候 需要解密,这个加解密的方式用的是最基本的AES,AES是需要key的,这个地方key是当前电脑的CPUID
所以,本机环境开发没问题,放到服务器上则要重新用工具加密字符串,否则key不对解密不了,或者说加密的也不对,Cpu换了嘛。配备了工具:https://github.com/demon28/Victory.ToolBox 用工具加密就行了。
下面几个配置,我都加上注释了,IgnoreAuthRight,会用的比较多,这个为true的时候,全局忽略权限检查,也就等于当前用户有了超级用户的权限。
2,contorller的基类。
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using System;
using System.Collections.Generic; namespace Victory.Core.Controller
{
public class TopControllerBase : Microsoft.AspNetCore.Mvc.Controller
{
/// <summary>
/// 不打nonaction 会被当成Action,在Swagger的时候会报错
/// </summary>
/// <param name="msg"></param>
/// <returns></returns> [NonAction]
public JsonResult FailMessage(string msg = "失败")
{
return Json(new { Success = false, Code = 0, Message = msg });
}
[NonAction]
public JsonResult SuccessMessage(string msg = "成功")
{
return Json(new { Success = true, Code = 1, Message = msg });
} [NonAction]
public JsonResult SuccessResult<T>(T t, string msg = "成功")
{ return Json(new { Success = true, Code = 1, Message = msg, Content = t }); }
[NonAction]
public JsonResult SuccessResultList<T>(List<T> list, Models.PageModel page, string msg = "成功")
{ return Json(new { Success = true, Code = 1, Message = msg, PageIndex = page.PageIndex, PageSize = page.PageSize, TotalCount = page.TotalCount, TotalPage = page.ToTalPage, Content = list });
} [NonAction]
public JsonResult SuccessResultList<T>(List<T> list, string msg = "成功")
{ return Json(new { Success = true, Code = 1, Message = msg, Content = list });
} }
}
这个源码在Victory.Core 里面,这是一个工具集,其实我现在有点后悔把 这个基类放到 工具集中,但是现在已经用起来了,我又不好去改,如果去掉的话,已经在开发的项目,如果升级这个程序集则会有问题。
源码在这里:https://github.com/demon28/Victory.Core
这个基类主要的作用也就是 序列化 json。 还是比较好用的。
==================================华丽的分割线==================================
Victroy 对比从1.0 演化到1.1 ,重点只是解决了 权限问题,将权限更加放大了,这个是在使用过程中被吐槽最多的地方。
但是并没有解决我 难受的痛点, 我最难受的痛点 还是 不够纯粹。 里面 又混合,Vue,Jquery,Element-ui,Bootstarp 以及各种jq插件。
但是 我说过这是最后一个 1.X版本, 2.0的话,我会基于Vue-Element-admin 做前后端分离,这里 特地要保留1.1 也是因为 1.x是 前后端不分离的。
我始终绕不过这坎,觉得就一个程序员 还要分离前后端 有点多余。还不如 一个VS全部解决呢, 只奈何VS 对Vue 的支持不够好,还要开Vscode
就这一点来说,我还更愿意用1.x 开发项目。另外1.1 还有一个大问题, 还是在权限上,这个都逼的我想再推进一个1.2版本。想了想还是算了。
在权限设计的时候。

我觉得 Tright_power 有点对于, 直接用 角色表 去关联各个数据即可。这里完全可以省去两张表,另外Tright_Power_Element这个表也多余,
事实上说明 照搬 RBAC-1 还是要做精简的, 想了想, 文件表 也要去掉,等我有那闲心思 再优化一般吧,现在我还是坚持1.1是 1.x 的最后一个版本。
Victory1.1 源码: https://github.com/demon28/Victory.Template1.1
代码生成器:https://github.com/demon28/Victory.CodeGenerator
加密工具箱:https://github.com/demon28/Victory.ToolBox
Victory 工具集:https://github.com/demon28/Victory.Core
后记:6月1-10月1 经历了四个月,已完全恢复编码能力。新入职公司已经转正。 并且得到同事们认可,国庆节后转岗做项目经理,
感谢四个月来努力的自己。
手把手撸套框架-Victory框架1.1 详解的更多相关文章
- Django框架 之 ORM查询操作详解
Django框架 之 ORM查询操作详解 浏览目录 一般操作 ForeignKey操作 ManyToManyField 聚合查询 分组查询 F查询和Q查询 事务 Django终端打印SQL语句 在Py ...
- laravel框架的中间件middleware的详解
本篇文章给大家带来的内容是关于laravel框架的中间件middleware的详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. laravel中间件是个非常方便的东西,能将一些逻辑 ...
- ORM框架对比以及Mybatis配置文件详解
ORM框架对比以及Mybatis配置文件详解 0.数据库操作框架的历程 (1) JDBC JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句 ...
- 手把手撸套框架-Victory框架1.0 详解
目录 其实Victory框架1.0 在8月份就完成了,整个9月份都没有更新博客,主要还是因为松懈了. 所以,趁着国庆节的放假的时间把博客给更新一下,1.0总的来说算不得一个成熟的产品,但是拿来开发我们 ...
- Laravel框架中的make方法详解
为什么网上已经有这么多的介绍Laravel的执行流程了,Laravel的容器详解了,Laravel的特性了,Laravel的启动过程了之类的文章,我还要来再分享呢? 因为,每个人的思维方式和方向是不一 ...
- Hadoop框架:NameNode工作机制详解
本文源码:GitHub·点这里 || GitEE·点这里 一.存储机制 1.基础描述 NameNode运行时元数据需要存放在内存中,同时在磁盘中备份元数据的fsImage,当元数据有更新或者添加元数据 ...
- Hadoop框架:DataNode工作机制详解
本文源码:GitHub·点这里 || GitEE·点这里 一.工作机制 1.基础描述 DataNode上数据块以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是数据块元数据包括长度.校验.时 ...
- 【必知必会】手把手教你配置MySQL环境变量——图文详解
一.先决条件 假设我们已经成功安装MySQL数据库.如果还有小伙伴不知道如何安装MySQL数据库,可以在本文下留言,留言数超20,则出一期"手把手教你安装MySQL数据库--图文详解&quo ...
- 手把手撸套框架-ORM框架的选择
目录 一,为什么选择SqlSugar? 在.net core ORM框架中,能选择的方案其实有很多,包括以下方案: 1,EF-Core 2,Dapper 3,FreeSql 4,SqlSugar 为什 ...
随机推荐
- rabbitmq用户权限
none:无法登录控制台 不能访问 management plugin,通常就是普通的生产者和消费者. management:普通管理者. 仅可登陆管理控制台(启用management plugin的 ...
- springBoot整合spring security+JWT实现单点登录与权限管理--筑基中期
写在前面 在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与 ...
- Webpack 入门指迷
大概算是一份教程吧, 只不过效果肯定不如视频演示之类的好..Webpack 最近在英文社区上经常看到, 留了心, 但进一步了解是通过下边的视频:视频: How Instagram.com Works, ...
- 为什么一个还没毕业的大学生能够把 IO 讲的这么好?
Java IO 是一个庞大的知识体系,很多人学着学着就会学懵了,包括我在内也是如此,所以本文将会从 Java 的 BIO 开始,一步一步深入学习,引出 JDK1.4 之后出现的 NIO 技术,对比 N ...
- 你不得不知的Java基础知识
本篇博客主要记录Java中面向对象的概念和Java语法的基础知识. 面向对象 什么是面向对象 面向对象是一种优秀的软件设计思想,是相对于面向过程.面向切面等设计思想的一种软件设计理念.它的核心思想是运 ...
- 【Gin-API系列】部署和监控(九)
本文是[Gin-API系列]的最后一篇文章,简单介绍如何在生产环境的部署架构和监控手段. 生产部署 部署架构 使用Nginx加Keepalived的方式搭建,可以达到高可用的效果,并可以横向扩容 如何 ...
- XmlAnalyzer1.00 源码
此工程用途:将xml同级属性/子节点按字母序排列重新输出. 源码下载: https://files.cnblogs.com/files/heyang78/XmlAnalyzer-20200526-1. ...
- linux 用户、用户组的操作
1.查看linux系统下的所有用户 方式一:grep bash /etc/passwd 方式二:查看etc/passwd文件,其他第三个参数大于500的都是用户自己新增的 vim /etc/passw ...
- 高可用服务之Keepalived邮件通知配置
上一篇博客我们了解了keepalived的架构以及安装.VIP的配置和高可用相关配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13634755.html: ...
- Css3新增的特性(1)
CSS3 模块 CSS3被拆分为"模块".旧规范已拆分成小块,还增加了新的. 一些最重要CSS3模块如下: 选择器 盒模型 背景和边框 文字特效 2D/3D转换 动画 多列布局 用 ...