目录

上一篇博客 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. 使用tensorflow2识别4位验证码及思考总结

    在学习了CNN之后,自己想去做一个验证码识别,网上找了很多资料,杂七杂八的一大堆,但是好多是tf1写的,对tf1不太熟悉,有点看不懂,于是自己去摸索吧. 摸索的过程是异常艰难呀,一开始我直接用capt ...

  2. Android开发之开源框架OKHTTP的Get请求代码,得到json字符串方法

      <span style="white-space:pre"> </span><pre name="code" class=&q ...

  3. okhttp3 示例

    1.GET请求 private fun httpGetDemo() { //1.请求参数 val url = httpHost + "/api/test?arg1=xxx" //2 ...

  4. 再爆安全漏洞,这次轮到Jackson了,竟由阿里云上报

    冤冤相报何时了,得饶人处且饶人.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[ ...

  5. windows远程连接老是出问题?如何使用Radmin进行云服务器的远程连接与文件传输?

    (windows远程连接老是出错怎么办?云服务器远程连接一直有问题怎么办?如何用对多台windows电脑远程连接怎么办? 最近发现win的mstsc不好用,偶然想起Radmin这款老牌软件,利用Rad ...

  6. LightOJ - 1214-Large Division(c++取模 + java的两种写法)

    Given two integers, a and b, you should check whether a is divisible by b or not. We know that an in ...

  7. EasyPoi导出Excel

    这几天一直在忙工作中的事情,在工作中有一个问题,可能是因为刚开始接触这个EasyPoi,对其也没有太多的理解,在项目中就使用了,有一个需求,是要导出项目中所有的表格,今天就对这个需求进行分析和实现吧; ...

  8. leetcode刷题-83删除排序链表中的重复元素

    题目 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 实现 # Definition for singly-li ...

  9. leetcode刷题-70爬楼梯

    题目 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 思路 最开始使用的是回溯的方法,但是时间效 ...

  10. JS语法_其他

    严格模式 let obj = { name: 'oceans', } function f1() { with (obj) { console.log(name) } } function f2() ...