手把手撸套框架-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 经历了四个月,已完全恢复编码能力。新入职公司已经转正。 并且得到同事们认可,国庆节后转岗做项目经理,

感谢四个月来努力的自己。

posted @ 2020-10-04 09:38  Near_wen  阅读(791)  评论(2编辑  收藏  举报