基于RBAC的通用用户权限管理

1.     通用用户权限管理模块设计

基于RBAC的通用用户权限管理_第1张图片

做过应用系统开发的大家肯定都会设计到用户权限的管理,比如说不同的登录用户看到不同的winform的菜单,不同的页面(jsp,asp等),可根据权限大小调用类方法等。可以对于真正的业务系统而言,权限管理是必不可少的。这里主要介绍一个在一个项目中我们采用的通用权限管理的数据模型。首先说明一下对于这个数据模型的管理,是一个单独的web应用,结合spring security可实现多个业务系统的权限管理。首先对本文会用到的

         资源:什么叫做资源呢?资源就把它理解成比如菜单,用户,角色的一种抽象吧,你可以将你想用户权限管理的任何东西理解成资源。

         操作:增、删、改查及可以理解成操作。

         权限:权限=资源+操作,例如资源中有一个叫user(用户资源),操作里面有条记录叫(add),user+add即是一个权限记录,说白了就是增加一个用户的权限呗。

         角色:每用户都是有角色的,角色和权限之间形成一对多的关系,则可以将每个用户拥有什么权限对应起来。这也是RBAC的思想。

 

1、APP保存与各个分系统相关信息,可以看到资源,操作,权限,角色,访问控制表都和他是manytoone的关系。如果我们有多个业务系统木有问题,可以对这些系统的资源,操作权限,角色,访问控制进行管理

列名

数据类型

中文

描述

id

int

分系统ID

用于检索各个分系统

code

Char(255)

分系统代号

分系统代号

name

text

分系统名称

分系统名称

 

2、Oper保存操作相关信息,如刚才所说,操作可以是CRUD等之类的。

列名

数据类型

中文

描述

id

int

主键

操作表主键

name

text

操作名称

具体的对于资源的操作名称(例如读、写、创建等)

mask

int

掩码

Int类型用于定义区分各类操作

code

Char(255)

操作代码

比如读操作可用’R’代替

desc

text

备注

 

 

3、RESC:表保存资源相关信息。这里可以自己定义资源类型,比如说用户,角色等之类的。

列名

数据类型

中文

描述

id

int

资源表主键

 

name

text

资源名称

用户、角色、菜单等各类资源名称

desc

text

资源描述

用户简要描述各类资源

 

4、Perm:为权限表,需要强调的是权限表与RESC,Oper之间是多对一的关系

列名

数据类型

中文

描述

id

int

权限表主键

 

name

text

权限名称

例如:user(资源):read(操作)

OID

Int

 

外键Oper表id

RID

Int

 

外键RESC表id

 

5、Access 访问控制表:这是访问控制即可对某些特定的url进行访问控制,结合spring-securiy可以对web进行保护

列名

数据类型

中文

描述

id

int

访问控制表主键

 

type

text

类型

比如URL类型等

value

text

访问值

 

priority

int

优先级

访问优先级

desc

text

 

描述

PID

Int

 

外键Perm表id

 

6、RegionType:为部门类型表(树状结构)

列名

数据类型

中文

描述

id

int

主键

 

name

text

部门类型名称

 

 

7、Region:为部门表

列名

数据类型

 

 

id

int

主键

 

name

text

部门名称

 

entityID

int

部门ID

 

parent

int

父部门ID

 

RID

Int

 

外键RegionType表id

 

8、Role:为角色表

列名

数据类型

中文

描述

id

int

主键

 

name

text

角色名称

 

desc

int

描述

 

PID

Int

 

外键Perm表id

 

9、RegionRole:为部门角色表

列名

数据类型

中文

描述

id

int

主键

 

RID

Int

 

外键Role表id

ReID

Int

 

外键Region表id

 

10、UserStatus:为用户表

列名

数据类型

中文

描述

id

int

主键

 

username

text

用户名

 

password

text

密码

 

status

int

用户状态

是否被锁定,注销等

reference

text

保留字段

保留字段

repocode

text

仓库代号

每个人员都是在用户仓库里面的

desc

text

描述

描述

ReRoID

id

 

外键RegionRole表id

 

 

11、UserRepo  这个表是做什么的---用户仓库,人员就是来源于仓库的

基于RBAC的通用用户权限管理_第2张图片

列名

数据类型

中文

描述

id

int

主键

 

name

text

名称

 

type

text

类型

 

repocode

int

仓库代号

 

reference

text

保留字段

 

desc

text

描述

 

 

希望对于数据模型可以给大家在用户权限管理上,有所启发。最后再提一下,大家可以将这个用户管理模块单独部署,那样以后就可以通过负载均衡,就可以提供分布式服务了哦,说得高大上一点就是SAAS架构了。扯多了。。。。。

                                                                                                                                                                                                                                                                                                                                 Predator.Zhang


你可能感兴趣的:(JAVA项目总结)