近期做系统开发的时候研究了一下简单的用户授权功能,针对问题作出如下设计
A 用户所领导 ,A有审批 某项经费的权利 , A出差期间不方便进行经费审批,所以这个过程中需要将自己的这项权限委托给相关人员,这个委托过程,尽量的少泄露不必要的用户个人信息。所以便有了 ,A用户针对系统中某一项审批功能授权给 B用户,这个授权有时间期限,开始时间,结束时间,过期后系统会自动收回授权。这个回收授权的过程需要保存历史记录,以供后期查询。
表名称:sys_user_delegate 用户设置代理用户角色关系表 |
||||||
字段名称 |
数据类型 |
长度 |
描述 |
主键(是/否) |
非空(是/否) |
备注 |
ID |
Varchar |
64 |
主键 |
是 |
是 |
|
User_id |
varchar |
64 |
授权人ID |
否 |
是 |
|
Delegate_uid |
Varchar |
64 |
代理者ID |
否 |
是 |
被授权人 |
Start_time |
Datetime |
|
|
|
|
授权开始时间 |
End_time |
Datetime |
|
|
|
|
授权结束时间 |
Role_id |
Varchar |
64 |
|
|
|
授权的角色ID |
Is_validate |
Char |
1 |
是否激活 |
|
|
是否激活0,激活;1未激活 |
Is_history |
Char |
1 |
是否进入历史 |
否 |
|
是否进入历史,0,否;1,是; |
Create_by |
Varchar |
64 |
创建者 |
|
|
|
Create_date |
Datetime |
|
创建时间 |
|
|
|
Update_by |
Varchar |
64 |
修改者 |
|
|
|
Update_date |
Datetime |
|
修改时间 |
|
|
|
Remarks |
Varchar |
255 |
备注信息 |
|
|
|
Delete_flag |
Char |
1 |
删除标记 |
|
是 |
|
表名称:sys_user_delegate_log 代理用户 操作 资源 日志表 |
||||||
字段名称 |
数据类型 |
长度 |
描述 |
主键(是/否) |
非空(是/否) |
备注 |
ID |
Varchar |
64 |
主键 |
是 |
是 |
|
Delegate_instance_id |
Varchar |
64 |
|
|
|
关联sys_user_delegate 的ID |
Operation_resource |
Varchar |
200 |
|
|
|
用户操作资源主业务对象信息 |
Operation_resource_id |
Varchar |
64 |
|
|
|
用户操作资源的ID |
Operation_time |
Datetime |
|
|
|
|
用户操作时间 |
Create_by |
Varchar |
64 |
创建者 |
|
|
|
Create_date |
Datetime |
|
创建时间 |
|
|
|
Update_by |
Varchar |
64 |
修改者 |
|
|
|
Update_date |
Datetime |
|
修改时间 |
|
|
|
Remarks |
Varchar |
255 |
备注信息 |
|
|
|
Delete_flag |
Char |
1 |
删除标记 |
|
是 |
|
系统的基本架构 user 表,user_role 表 ,role 表 , role_menue表
系统先期设计的时候需要考虑,将role 划分为可以被授权的角色,和不可以授权的角色,因为不是所有的角色都需要被授权。切这个授权不能传递,就是说A将某项权限赋予给B,B不能再讲某项权限授予C。 这个设计过程中默认的采用的是授权只能授予本部门的人员,不能跨部门授权,因为这个跨部门授权的过程可能更加复杂。
原文:http://blog.csdn.net/x734400146/article/details/44649309