权限系统

  应用系统离不开权限控制,权限中心不一定能抽象出所有的业务场景,这里定义的权限系统不一定能够满足所有的场景,但应该可以满足多数的业务需求。

  Abp的zero项目也定义了权限相关的表,但里面很多东西是用不到了,而且也不太符合平时的使用习惯,直接用他登录控制这一块内容,性能也会存在很大的问题。

数据库关系图

说明

  Abp支持多租户,也是我认为最大的亮点之一,所有的数据库表都有TenantId字段,相应的,领域实体也实现了IMayHaveTenant接口

  SEC_Dept(部门)为一棵树,每创建一个租户,自动为租户添加一条根节点记录,以租户名称做为顶级部门名称

  SEC_AdminUser(用户),用户名称在整个系统中唯一,没有做租户内唯一,如果是租户内唯一,则在登录界面需要选择租户,部门与用户之间为1:n关系,管理员与角色关系为m:n,Email为邮箱,工作流待办和催办依赖于此字段,如果为空,则不会收到流程邮件。

  SEC_Module(模块),模块即为菜单,定义为一棵树,Code定义树的路径,格式为:“父节点Id.子节点Id. 子节点Id.”,拥有父节点访问权限则自动拥有所了下级节点权限,模块与角色(SEC_Role)关系为m:n,中间表为:SEC_ModuleSEC_Role

  SEC_Operate(操作),如“新增管理员”、“修改管理员”,Code为操作编码,租户内唯一,模块与操作之间关系为1:n,操作与角色(SEC_Role)之间关系为m:n,操作权限验证需要在前端页面ng-alain中验证,也需要在Abp的Application层进行验证,都是根据操作Code来判断的。

  SEC_Role(角色),角色与模块、操作、管理员之间的关系都为m:n,一个管理员登录,可以查询出角色列表,进而关联查询出他能访问的模块集合和操作集合,进而进行菜单的操作权限控制。

前端页面部分截图

  部门用户管理

模块操作管理

角色管理

企业级工作流解决方案(十)--集成Abp和ng-alain--权限系统的更多相关文章

  1. 企业级工作流解决方案(十一)--集成Abp和ng-alain--权限系统服务

    权限系统主要定义为管理员增删改查权限数据,直接读取数据库,权限系统服务主要定义为供其他系统调用的权限验证接口,定义为两个不同的微服务. 权限系统有一个特点,数据变动比较小,数据量本身并不是很大,访问量 ...

  2. 企业级工作流解决方案(十五)--集成Abp和ng-alain--Abp其他改造

    配置功能增强 Abp定义了各种配置接口,但是没有定义这些配置数据从哪里来,但是管理配置数据对于一个应用程序来说,是必不可少的一件事情. .net的配置数据管理,一般放在Web.config文件或者Ap ...

  3. 企业级工作流解决方案(十四)--集成Abp和ng-alain--自动化脚本

    对于.net方向,做过自动化的,应该没有人不熟悉msbuild吧,非常强大的代码编译工具,.net平台的编译工作都是交给他来完成的,包括.net core的命令,本质上都是调用msbuild来执行的 ...

  4. 企业级工作流解决方案(十二)--集成Abp和ng-alain--用户身份认证与权限验证

    多租户 如果系统需要支持多租户,那么最好事先定义好多租户的存储部署方式,Abp提供了几种方式,根据需要选择,每一个用户身份认证与权限验证都需要完全的隔离 这里设计的权限数据全部存储在缓存中,每个租户单 ...

  5. 企业级工作流解决方案(十三)--集成Abp和ng-alain--数据库读写分离

    说到程序里面数据库管理,无非就是两件事情,一是数据库操作,对于数据库的操作,各种程序语言都有封装,也就是所谓的ORM框架,.net 方向一般用得比较多和就是.net framework和dapper, ...

  6. 企业级工作流解决方案(六)--微服务消息处理模型之与Abp集成

    身份认证传递 对于Abp比较熟悉的朋友应该对他里面的用户身份认证比较熟悉,他是通过实现微软提供的权限认证方式实现的,用户登录身份信息存储在System.Security.Claims.ClaimsPr ...

  7. 企业级工作流解决方案(八)--微服务Tcp消息传输模型之服务端处理

    服务端启动 服务端启动主要做几件事情,1. 从配置文件读取服务配置(主要是服务监听端口和编解码配置),2. 注册编解码器工厂,3. 启动dotnetty监听端口,4. 读取配置文件,解析全局消息处理模 ...

  8. 企业级工作流解决方案(九)--微服务Tcp消息传输模型之客户端处理

    客户端启动 客户端启动主要做三件事情,1. 从配置文件读取服务调用配置,存储到全局对象中.2. 指定客户端编解码器工厂.3. 预连接,即预先建立与服务端的通信Chanel. [DependsOn(ty ...

  9. 企业级工作流解决方案(七)--微服务Tcp消息传输模型之消息编解码

    Tcp消息传输主要参照surging来做的,做了部分裁剪和改动,详细参见:https://github.com/dotnetcore/surging Json-rpc没有定义消息如何传输,因此,Jso ...

随机推荐

  1. 【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件

    问题描述 在平常的工作习惯中,如果使用VS Code做脚本的开发,是一个非常好用的工具,现在也可以通过VS Code的不同方式来连接到Linux VM中(ssh), 第一种是VS Code的Termi ...

  2. JS图片的放大与缩小

    <!doctype html><head><meta charset=utf-8" /><title>javascript控制图片缩小或者放大 ...

  3. Ubuntu20.4安装

    官网下载镜像 https://releases.ubuntu.com/20.04/ubuntu-20.04-live-server-amd64.iso 挂载开装 选语言 选键盘 网络设置DHCP到地址 ...

  4. C++学习---顺序表的构建及操作

    #include<iostream> #include<fstream> using namespace std; #define MAXLEN 100 //定义顺序表 str ...

  5. python第二章:控制流

    变成实际上是一个过程的提现,每个过程都是有多个流程块组成. 比如:判断是否下雨的过程 1.布尔值 在第一章最后举例了比较操作后,最终返回的结果 True or False True 和 False是一 ...

  6. 建议你吃透python这68个内置函数!

    内置函数就是Python给你提供的, 拿来直接用的函数,比如print,input等. 截止到python版本3.6.2 ,一共提供了68个内置函数,具体如下 abs() dict() help() ...

  7. linux设置systemctl 启动脚本

    centos 7 服务的systemctl 脚本一般存在:/usr/lib/systemd目录.目录下又分为system,和user之分, /usr/lib/systemd/system #系统服务, ...

  8. 4. Validator校验器的五大核心组件,一个都不能少

    困难是弹簧,你弱它就强.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的 ...

  9. Qlik Sense学习笔记之Mashup开发(二)

    date: 2019-01-26 11:28:07 updated: 2019-01-26 11:28:07 Qlik Sense学习笔记之Mashup开发(二) 1.Mobile SPA UI Fr ...

  10. Linux命令的写法

    命令名 [选项]... [参数]... 命令名:一般由多个小写字母组成,是大小写敏感 选项:[]里面表示可有可无 ... 表示可以有多个选项 选项的格式: 以-开头的,后面一般跟一个字母或数字,多数情 ...