一、概述

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);

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐