一、概述
1、用户权限是任何一个应用程序的基础模块,是为应用程序提供安全访问规则的实现,用于保障系统的安全和数据安全基础。本次主要实现 一个基于角色的用户权限管理系统,后端采用Springboot与Shiro整合实现权限认证管理。
2、名词解释:
用户(User):是软件系统使用者的系统账号。每个使用者,都有自己在系统中独一无二的账号,系统通过这个账号来识别不同的使用者,同时,也是通过当前的用户来认证当前使用者的权限。
角色(Role):可以理解为一定数量的权限的集合,权限的载体,例如:系统管理员,普通用户。
权限(Permission):指对软件系统中某一个功能或者资源操作的权利。
二、数据库设计
1、说明
一个用户可以拥有多个权限,同时一个权限也可以赋予多个用户,那么用户和权限就是多对多的关系,需要角色来维护和链接用户和权限之间的关系。通过用户关联角色,角色关联权限,从而达到用户和权限的一个间接关联关系。而用户和角色,角色和权限也是多对多的全系,从而也需要引入用户角色和角色权限两张中间表来实现。
(1) 每一个用户包含的属性有用户ID,用户名称,密码,用户状态等基本属性。
(2) 每一个角色包含的属性有角色ID,角色名称,状态等基本属性。
(3) 每一个权限包含的属性有权限ID,权限名称,URL,权限编码,父级ID,权限类型,状态等基本属性。
2、概念模型设计
根据说明,设计的实体联系E-R图如下:
3、 关系模式设计(下划线主键)
用户(用户ID,用户名称,密码,状态,创建时间,、、、)
角色(角色ID,角色名称,状态,创建时间,、、、)
权限(权限ID,权限名称,URL,权限编码,父级ID,权限类型,状态,、、、)
用户角色 ( 用户ID,角色ID )用户ID和角色ID均设置为外键约束
角色权限(角色ID,用户ID)用户ID和角色ID均设置为外键约束
4、关联关系
5、表中数据形式
用户表
角色表
权限表
用户角色表
角色权限表
6、实现的结果
根据登录用户的ID,查询用户的权限,从而实现根据不同用户生成不同的菜单与实现更细粒度的权限管理。
select distinct f.func_id,f.func_name,f.func_url,f.func_code,f.parent_id,f.func_type,f.status,f.sort_num,f.create_time,f.update_time
from tb_roles r,tb_functions f,tb_role_function rf where r.role_id =rf.role_id and f.func_id = rf.func_id and r.role_id in(
select r.role_id from tb_users u,tb_roles r,tb_user_role ur where u.user_id = ur.user_id and r.role_id = ur.role_id and f.func_type=1
and u.user_id = 1);