一,简单权限系统设计(用户,角色,权限)
表设计
用户表:t_user 角色表:t_role 权限表:t_permission
关联表
用户角色关联表:t_user_role 角色权限关联表:t_role_permisson
介绍:
根据用户查询t_user_role的到用户的角色(根据需要,可以是一个和多个角色),在根据查询出来的角色到t_role_permission中获取对应角色的权限。
如图:整个权限设计
用户表数据
角色表数据
用户角色关联表数据
权限表数据
角色权限关联表数据
所有操作如下:
SELECT * FROM t_user WHERE `username`='admin' AND `password`='admin';
SELECT * FROM t_user_role WHERE userid = 1
SELECT * FROM t_role WHERE id = 1
SELECT * FROM t_role_permission WHERE roleid = 1
SELECT * FROM t_permission WHERE id = 1
SELECT * FROM t_permission WHERE id = 2
SELECT * FROM t_permission WHERE id = 3
SELECT * FROM t_permission WHERE id = 4
------------------------------------------------------
SELECT `id` FROM t_user WHERE `username`='赵六' AND `password`='1111';
#得到用户id:5 ,表示登陆成功
SELECT `roleid` FROM t_user_role WHERE `userid`=5;
#得到角色id:3 ,表示获取到角色
SELECT `rolename` FROM t_role WHERE `id`=3;
#根据角色id 3,查询得到角色名称为 “学生”
SELECT `permissionid` FROM t_role_permission WHERE `roleid`=3;
#根据角色id,查询得到权限id;只有一个(1)
SELECT * FROM t_permission WHERE `id`=1;
#根据权限id 1, 查询权限表,权限名称 “查看” 权限标签 “view”
---------------------------------------------------------
SELECT `id` FROM t_user WHERE `username`='张三' AND `password`='123456';
#得到用户id:2 ,表示登陆成功
SELECT `roleid` FROM t_user_role WHERE `userid`=2;
#得到角色id:2 ,表示获取到角色
SELECT `rolename` FROM t_role WHERE `id`=2;
#根据角色id,查询得到角色名称为 “教师”
SELECT `permissionid` FROM t_role_permission WHERE `roleid`=2;
#根据角色id,查询得到权限id;(1,4)
SELECT * FROM t_permission WHERE `id`=1;
#根据权限id 1, 查询权限表,权限名称 “查看” 权限标签 “view”
SELECT * FROM t_permission WHERE `id`=4;
#根据权限id 4, 查询权限表,权限名称 “新增” 权限标签 “add”
-------------------------------------------------------------------
这是一个简单的常见的权限管理。
二:权限系统设计(用户,角色,权限,资源)
这个比上面的设计略微复杂点,更适合相对复杂的系统和权限功能要求更高的系统。
首先,我们添加资源表,
用户和角色 以及 他们的关联表,都和上面的一样,我们新增的资源和角色联系在一起。
同时修改 角色权限关联表为 , 角色资源权限关联表。
如图:
介绍:
根据用户查询t_user_role的到用户的角色(根据需要,可以是一个和多个角色),在根据查询出来的角色到t_role_resource_permission中获取对应角色的资源和对应权限。
这个权限系统可以用在web常见的系统中,
resource资源可以为web系统的一些模块,如不同的路径。
permission为权限,可以使用shiro这块, 这样permissionLable为system:edit 或 user:add,user:del等这样的shiro权限标签