1. 场景描述
(1)权限控制是IT项目特别是企业项目,绕不开的重要模块,接下来结合springboot介绍下权限控制框架shiro。
(2)springboot集成shiro的东西有点多,一篇博客完全介绍清楚有点费劲,拟分成3篇吧,第一篇介绍概念、原理;第二篇介绍搭建代码,详细介绍shiro框架;第三篇结合mybatis,搭建可运行项目。
2. 解决方案
2.1 简介
目前的权限控制,很多公司或者企业采用的都是基于角色进行访问控制的。
百度百科介绍,RBAC(英文缩写)
2.2 角色控制原理
通过数据库表结构进行介绍
说明:
基于角色的权限控制,基本都是基于这五张表来的。
这五张表分别是:
(1)用户表,存储用户信息。
(2)角色表,存储角色信息,这里的角色类似于我们生活中的角色,企业中角色一般是:财务录单员、财务审核人、财务经理、采购员、采购经理等等。
(3)资源表,一般是系统菜单或者其他资源。
(4)用户角色表,多对多关系。
(5)角色资源表,多对多关系。
流程:
(1)用户登录,校验用户名与密码是否正确;
(2)通过用户名获取用户对应的角色;
(3)通过角色获取对应的资源,返回给前端。
2.3 常用框架
基于上面的权限控制原理,项目组可以通过代码来实现权限控制,也可以通过框架来实现,以前常用的或者好多企业在用的是spring security权限控制框架,一般会基于spring security做一套统一登录系统(单点登录),由一个系统统一控制企业用户权限,其他系统通过接口方式获取用户权限信息。
以前项目中也一直使用spring security,但是security的过滤链还是小多的,配置起来还是稍微有点麻烦,后来听别人说起shiro,看了下官网,又查了相关资料,shiro也是apache下的子项目,使用者也蛮多的,好评不少,发现比securiy简洁很多,效果也差不多,后续的项目就改用shiro了。
2.4 shiro介绍
2.4.1 官网
2.4.2 使用方式
通过maven的gav获取jar使用(目前官网最新版本1.4.1)
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.4.0</version>
</dependency>
2.4.3 shiro介绍
shiro主要包含六大模块
(1)认证;(2)授权;(3)密码;(4)回话管理;(5)web集成;(6)集成模块
说明:
常用的把(1)和(2)用好就可以了,3-6可以暂时不用管。
其中(1)是登录校验,就是校验用户名和密码是否正确用的模块;(2)是权限控制模块,校验登录用户是否有资源权限。
好了,先到这里,下节开始全程撸码与详细shiro权限控制框架介绍。