一切福田,不離方寸,從心而覓,感無不通。

SpringBoot之整合Shiro(最详细)

1.SpringBoot整合Shiro思路

在这里插入图片描述

2. 环境搭建

2.1 创建项目

在这里插入图片描述

2.2 引入依赖

pom.xml

 

2.3 创建前端页面

在webapp文件夹中创建index.jsp和login.jsp
index.jsp

 

login.jsp

 

2.4 配置视图信息

application.properties

 

2.5 解决IDEA冲突问题

JSP 与IDEA 与SpringBoot存在一定的不兼容,修改此配置即可解决
在这里插入图片描述

2.6 测试搭建的环境

在这里插入图片描述

3. 整合Shiro

3.1 引入依赖

pom.xml

 

3.2 自定义Realm

在shiro文件夹下创建realm文件夹

 

3.3 Shiro配置

在config文件夹中创建ShiroConfig.java

 

3.4 启动测试

输入http://localhost:8080/shiro/index.jsp,发现需要跳转到login.jsp
在这里插入图片描述

4. 常见过滤器

  • 注意: shiro提供和多个默认的过滤器,我们可以用这些过滤器来配置控制指定url的权限:

5. 认证和退出

5.1 在index.jsp添加a标签

index.jsp

 

5.2 编写controller

UserController.java

 

5.3 修改自定义Realm

CustomerRealm.java

 

5.4 修改ShiroConfig配置

ShiroConfig.java
公共资源一定是在受限资源上面,不然会造成死循环。

 

5.5 测试

登录正常,登出正常,未登录和登出后不能访问index.jsp
在这里插入图片描述
在这里插入图片描述

6. MD5、Salt的认证实现

6.1 创建数据库

 

6.2 引入依赖

 

6.3 配置数据源和整合mybatis

application.properties

 

6.4 创建实体类entity

User.java

 

6.5 创建DAO接口

UserDao.java

 

6.6 编写Mapper配置文件

UserDao.xml

 

6.7 创建Service接口

UserService.java

 

6.8 编写生成随机盐工具类

SaltUtil.java

 

6.9 编写Service实现类

UserServiceImpl.java

 

6.10 编写Controller

UserController.java

 

6.11 修改自定义Realm

CustomerRealm.java

 

6.12 编写获取对象工具类

ApplicationContextUtil.java

 

6.13 修改Config

ShiroConfig.java

 

6.14 添加注册页面

register.jsp

 

6.15 测试

添加成功

在这里插入图片描述
认证
在这里插入图片描述
优化版推荐阅读(SpringBoot + Shiro + Jwt 实现登录认证,代码分析):https://blog.csdn.net/qq_43290318/article/details/108225519

7. 授权实现

7.1 模拟数据实现授权

7.1.1 模拟数据

CustomerRealm.java

 

7.1.2 页面资源授权

index.jsp

 

7.1.3 代码方式授权

OrderController.java

 

7.1.4 方法调用授权

OrderController.java

 

7.2 数据库实现角色授权

7.2.1 授权数据持久化

在这里插入图片描述

7.2.2 创建数据库表

 

7.2.3 创建实体类

User

 

Role

 

Perms

 

7.2.4 创建Dao接口

UserDao.java

 

7.2.5 编写Mapper实现

UserDao.xml

 

7.2.6 编写Service接口

UserService.java

 

7.2.7 编写Service实现方法

UserServiceImpl.java

 

7.2.8 修改自定义Realm

CustomerRealm.java

 

7.3 数据库实现权限授权

7.3.1 创建Dao接口

UserDao.java

 

7.3.2 编写Mapper实现

UserDao.xml

 

7.3.3 编写Service接口

UserService.java

 

7.3.4 编写Service实现方法

UserServiceImpl.java

 

7.3.5 修改自定义Realm

CustomerRealm.java

 

7.3.6 数据库表数据设置

在这里插入图片描述

7.3.7 测试

在这里插入图片描述
在这里插入图片描述

8. shiro使用缓存

8.1 Cache

8.1.1 Cache 作用

Cache 缓存: 计算机内存中一段数据

作用: 用来减轻DB的访问压力,从而提高系统的查询效率

流程:

在这里插入图片描述

8.1.2 使用shiro中默认EhCache实现缓存

1.引入依赖

 

2.开启缓存

 

8.1.3 测试

注意:如果控制台没有任何sql展示说明缓存已经开启

8.2 Redis

8.2.1 shiro中使用Redis作为缓存实现

1.引入redis依赖

 

2.配置redis连接

 

3.启动redis服务

在这里插入图片描述

4. 开发RedisCacheManager

自定义shiro缓存管理器
RedisCacheManager.java

 

5.开RedisCache实现

 

6. 启动项目测试发现报错

  • 错误解释: 由于shiro中提供的simpleByteSource实现没有实现序列化,所有在认证时出现错误信息
    在这里插入图片描述
    解决方案如下:
    实现 实体类 序列化
    自定义salt实现 实现序列化接口

 

修改自定义realm中使用的salt

 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

7. 测试

在这里插入图片描述

9. shrio实现验证功能

9.1 验证码工具类

 

9.2 开发页面加入验证码

 

9.3 开发控制器

 

9.4 放行验证码

ShiroConfig.java

 

9.5 修改认证流程

 

9.6 启动测试

在这里插入图片描述

10. shiro标签在jsp使用

 

11. Shiro整合springboot之thymeleaf权限控制

11.1 引入依赖

 

11.2 页面中引入命名空间

 

11.3 常见权限控制标签使用

 

11.4 加入shiro的方言配置

  • 页面标签不起作用一定要记住加入方言处理

内容参考:
B站编程不良人:https://www.bilibili.com/video/BV1uz4y197Zm
仅用于学习!

from:https://blog.csdn.net/Yearingforthefuture/article/details/117384035