β

简单权限系统设计(用户,角色,权限)

lenglingx的个人页面 668 阅读

一,简单权限系统设计(用户,角色,权限)

表设计

用户表: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权限标签

作者:lenglingx的个人页面
独钓渔的博客
原文地址:简单权限系统设计(用户,角色,权限), 感谢原作者分享。

发表评论