一,简单权限系统设计(用户,角色,权限)web
表设计sql
用户表:t_user 角色表:t_role 权限表:t_permission设计
关联表code
用户角色关联表:t_user_role 角色权限关联表:t_role_permisson资源
介绍:it
根据用户查询t_user_role的到用户的角色(根据须要,能够是一个和多个角色),在根据查询出来的角色到t_role_permission中获取对应角色的权限。io
如图:整个权限设计class
用户表数据sso
角色表数据权限
用户角色关联表数据
权限表数据
角色权限关联表数据
全部操做以下:
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权限标签