目录

上一篇博客 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 详解的更多相关文章

  1. Django框架 之 ORM查询操作详解

    Django框架 之 ORM查询操作详解 浏览目录 一般操作 ForeignKey操作 ManyToManyField 聚合查询 分组查询 F查询和Q查询 事务 Django终端打印SQL语句 在Py ...

  2. laravel框架的中间件middleware的详解

    本篇文章给大家带来的内容是关于laravel框架的中间件middleware的详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. laravel中间件是个非常方便的东西,能将一些逻辑 ...

  3. ORM框架对比以及Mybatis配置文件详解

    ORM框架对比以及Mybatis配置文件详解 0.数据库操作框架的历程 (1) JDBC ​ JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句 ...

  4. 手把手撸套框架-Victory框架1.0 详解

    目录 其实Victory框架1.0 在8月份就完成了,整个9月份都没有更新博客,主要还是因为松懈了. 所以,趁着国庆节的放假的时间把博客给更新一下,1.0总的来说算不得一个成熟的产品,但是拿来开发我们 ...

  5. Laravel框架中的make方法详解

    为什么网上已经有这么多的介绍Laravel的执行流程了,Laravel的容器详解了,Laravel的特性了,Laravel的启动过程了之类的文章,我还要来再分享呢? 因为,每个人的思维方式和方向是不一 ...

  6. Hadoop框架:NameNode工作机制详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.存储机制 1.基础描述 NameNode运行时元数据需要存放在内存中,同时在磁盘中备份元数据的fsImage,当元数据有更新或者添加元数据 ...

  7. Hadoop框架:DataNode工作机制详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.工作机制 1.基础描述 DataNode上数据块以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是数据块元数据包括长度.校验.时 ...

  8. 【必知必会】手把手教你配置MySQL环境变量——图文详解

    一.先决条件 假设我们已经成功安装MySQL数据库.如果还有小伙伴不知道如何安装MySQL数据库,可以在本文下留言,留言数超20,则出一期"手把手教你安装MySQL数据库--图文详解&quo ...

  9. 手把手撸套框架-ORM框架的选择

    目录 一,为什么选择SqlSugar? 在.net core ORM框架中,能选择的方案其实有很多,包括以下方案: 1,EF-Core 2,Dapper 3,FreeSql 4,SqlSugar 为什 ...

随机推荐

  1. C# 自定义无边框窗体阴影效果

    工作中我们会经常遇到自定义一些窗口的样式,设置无边框然后自定义关闭.最大化等其他菜单,但是这样就失去了Winform自带的边框阴影效果,下面这个方法能让无边框增加阴影效果.代码如下: using Sy ...

  2. Mono生命周期小实验

    今天在写代码的时候,遇到一个初始化顺序问题,于是做了一个实验,下面记录结果: 情景: 1.在 脚本A中实例化 一个预制体,该预制体挂有脚本B 2.在 脚本A中,获取实例化物体 身上的 脚本B,并且设置 ...

  3. springboot AOP实战

    目录 AOP实战 maven依赖 定义切面 采用扫描类的方式 采用注解的方式 通知 前置通知 后置通知 返回通知 异常通知 环绕通知 JoinPoint 获取切点处的注解 git AOP实战 mave ...

  4. bootstrap-table存在合并单元格怎么处理数据

    效果如图: js文件如下: $(function () { initTable() $('#load_vip').change(function () { $ .ajax({ type: 'POST' ...

  5. Java面试题(1):详解int与Integer

    Java面试题(1):详解int与Integer int与Integer的区别 int是Java的基本数据类型之一,Integer是int的包装类 int直接再内存中储存值,Integer进行new操 ...

  6. Tomcat源码分析(从启动流程到请求处理)

    Tomcat 8.5下载地址 https://tomcat.apache.org/download-80.cgi Tomcat启动流程 Tomcat源码目录 catalina目录 catalina包含 ...

  7. 设计模式也可以这么简单(7年开发老鸟PS注释总结)

    设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four (GoF) 的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分 ...

  8. 《SeleniumBasic 3.141.0.0 - 在VBA中操作浏览器》系列文章之一:SeleniumBasic的下载

    Selenium是一种非常流行的浏览器和网页自动化技术,开发人员可以使用C#.Java.Python等语言来操作Chrome.Firefox等浏览器. VBA语言可以直接操作访问Microsoft I ...

  9. SDWebImageInfo

    SDWebImage 简介 iOS中著名的牛逼的网络图片处理框架 包含的功能:图片下载.图片缓存.下载进度监听.gif处理等等 用法极其简单,功能十分强大,大大提高了网络图片的处理效率 国内超过90% ...

  10. ActiveMQ客户端Apache.NMS从.net 4.0移植到.net standard 2.0

    1.从官网或GitHub下载Apache.NMS源码 2.新建.net standard 2.0类库 3.将源码复制到新建的类库中,并删除或注释CommonAssemblyInfo.cs文件(程序集版 ...