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 这个表是做什么的---用户仓库,人员就是来源于仓库的
列名 |
数据类型 |
中文 |
描述 |
id |
int |
主键 |
|
name |
text |
名称 |
|
type |
text |
类型 |
|
repocode |
int |
仓库代号 |
|
reference |
text |
保留字段 |
|
desc |
text |
描述 |
|
希望对于数据模型可以给大家在用户权限管理上,有所启发。最后再提一下,大家可以将这个用户管理模块单独部署,那样以后就可以通过负载均衡,就可以提供分布式服务了哦,说得高大上一点就是SAAS架构了。扯多了。。。。。