通用独立的权限管理系统

目录

一概述... 2

1.背景... 2

2.开发环境... 2

3.适用人群... 3

二项目结构... 3

1.项目结构预览... 3

2.项目说明... 3

三表说明... 4

1.表功能... 4

2.表关系... 5

四原理... 5

1.操作原理... 5

2.权限控制原理... 6

五使用说明... 6

1.用户... 6

2.菜单... 7

3.角色... 7

4.权限... 8

5.日志... 10

六调用... 11

1.引用Rights.Operate程序集调用... 11

2.通过API调用... 11

七总结... 11

 

一概述

1.背景

一般系统都会涉及到权限控制而且权限控件的原理基本相同,为了让开发团队把更多 的时间精力投入到业务中去,固有必要把权限控制提取出来以达到重复利用的目的,不用每个系统都去重复的开发权限管理模块,只需要经过简单的配置就可以把现有的权限管理拿来使用,这样节省了很多开发时间。此权限管理是独立于业务系统的,只需要经过简单的配置就可以利用起来,也可以很容易把代码提取出来融入到业务系统中去。

2.开发环境

      本系统是由VS2017,.NET Framework 4.6.1开发的,其中使用Autofac.4.8进行解耦,数据库使用的是sqlserver2012,前端UI使用的是AceAdmin,图标全是字体图标,树形控件用的是bootstrap-treeview,还用了一些其它的三方控件,都是些常用且易上手的,项目结构清析代码注释详细易读易懂。

3.适用人群

      本系统是一个权限管理的成品系统,一般需要结合其它业务系统进行使用,一般适合个人开发者研究学习,也适合个人,团队,工作室,公司等拿来对接现有的或待开发的业务系统,或者进行二次开发,以达到缩短开发周期的目的。

二项目结构

1.项目结构预览

通用独立的权限管理系统

 

2.项目说明

Rights.API

通过API的方式验证权限等

Rights.Operate

可以通过引用此程序集验证权限等,Rights.API就是引用此程序集来实现的

Rights.Basic

常量,接口,模型等公共逻辑

Rights.BLL

业务逻辑

Rights.Control

控制器

Rights.DAL

数据访问层

Rights.Entity

实体

Rights.IBLL

业务逻辑接口

Rights.IDAL

数据访问层接口

Rights.Tools

常用的工具

Rights.UI

UI层

 

三表说明

1.表功能

R_Member

用于分配权限的用户

R_MemberMenu

用户与菜单的关系

R_MemberRights

用户与权限的关系

R_MemberRole

用户与角色

R_Menu

菜单

R_Rights

权限

R_Role

角色

R_RoleMenu

角色与菜单的关系

R_RoleRights

角色与权限的关系

R_SiteLog

日志

R_User

登录权限管理系统的账户

 

2.表关系

通用独立的权限管理系统

 

四原理

1.操作原理

通用独立的权限管理系统

2.权限控制原理

通用独立的权限管理系统

五使用说明

1.用户

  • 可以录入用户也可以通过模板导入用户。
  • 用户Id与用户名是必须的,其它信息都是可空的,用户Id是不能重复的。
  • 部门,职位,分组标识,只是方便查询数据用的,与权限逻辑无关。分组标识是预留字段,只要有利归类查询数据可根据需要自行放一个值在这个字段。
  • 用户的删除是逻辑删除。
  • 可以为用户分配角色,菜单,为用户直接分配权限(包含权限,排除权限)
  • 为什么要为用户直接分配权限:
  • 用户通过“销售”这个角色拥有了20权限,但只想给某个销售19个权限,这时可以通过为这个销售直接排除一个权限就可以了,这个销售还是拥有“销售”角色的。
  • 用户通过“文职人员”角色拥有了50权限,但有一个用户需要在“文职人员”角色基本上再要一个额外的权限,这时可以通过为个用户直接分配一个权限就可以了,不用通过再加一个角色的方式来分配。

2.菜单

  • 菜单添加会添加到当前选择的菜单下面。
  • 菜单的删除是逻辑删除。
  • 可以查看拥有当前菜单的用户,包含通过角色拥有的和直接拥有的用户。

3.角色

  • 角色添加会添加到当前选择的角色下面。
  • 角色的删除是逻辑删除。
  • 可以查看拥有当前角色的用户。
  • 角色展现成一棵树只是为了方便查看,一般父节点可理解为分组或分类,叶子节点理解为真正的角色,分配角色时一般只选择叶子节点就可以了,选择节点时父节点不会联动的。例如在分配角色时如下图:

通用独立的权限管理系统

“管理员”节点理解为一个分组,表示他下面的角色都是管理员,

“Admin”,“督查”两个角色是管理员 。

4.权限

  • 权限添加会添加到当前选择的权限下面。
  • 权限码不能重复。
  • 权限的删除是逻辑删除。
  • 可以查看拥有当前权限的用户,包含通过角色拥有此权限的用户和直接拥有权限的用户。
  • 可以把权限码生成常量或枚举供验证权限的地方使用,如下图:

通用独立的权限管理系统

  • 权限展现成一棵树只是为了方便查看,一般父节点可理解为分组或分类,叶子节点理解为真正的权限,分配权限时一般只选择叶子节点就可以了,选择节点时父节点不会联动的。例如在分配权限时如下图:

通用独立的权限管理系统

“请假管理”理解为权限分组,他下面的3个节点“我要请假”,“我的请假”,“所有请假”就是我们要用的权限。

5.日志

  • 日志管理是记录权限管理系统的所有操作记录和异常还有登录。
  • 可以删除单条日志,也可以根据查询条件批量删除。

六调用

1.引用Rights.Operate程序集调用

  • Rights.Operate程序集是一个独立的程序集,不依赖权限管理模型,业务层,数据访问层。配置好权限数据库的连接就可以了。
  • RightsOperate:验证用户是否拥有某个权限,查询用户的所有权限。
  • MenuOperate:查询用户拥有的所有菜单,对菜单进行添加,修改,删除。
  • MemberOperate:查询用户是否是管理员,对用户进行添加,修改,删除。

2.通过API调用

  • 通过接口的方式进行调用,提供的功能与Rights.Operate一致,其实是Rights.API引用了Rights.Operate程序集。配置好权限数据库的连接就可以了。
  • RightsController:验证用户是否拥有某个权限,查询用户的所有权限。
  • MenuController:查询用户拥有的所有菜单,对菜单进行添加,修改,删除。
  • MemberController:查询用户是否是管理员,对用户进行添加,修改,删除。

七总结

 

此权限管理系统在站在通用的角度开发的,具有简单、易懂、易阅读、易二次开发的特点,能满足大多数系统的权限验证,如果有个别系统在权限验证方面有特殊的业务需求,可在此权限管理系统的基础之上进行二次开发。

体验地址:http://rights.liey.top

 

成都烈云网络科技有限公司

 

微信:lieyunwangluo

Q  Q:459432433

邮箱:[email protected]