【七】springboot整合redis(超详细)
springboot篇章整体栏目:
【一】springboot整合swagger(超详细
【二】springboot整合swagger(自定义)(超详细)
【三】springboot整合token(超详细)
【四】springboot整合mybatis-plus(超详细)(上)
【五】springboot整合mybatis-plus(超详细)(下)
【六】springboot整合自定义全局异常处理
【七】springboot整合redis(超详细)
【八】springboot整合AOP实现日志操作(超详细)
【九】springboot整合定时任务(超详细)
【十】springboot整合redis实现启动服务即将热点数据保存在全局以及redis(超详细)
【十一】springboot整合quartz实现定时任务优化(超详细)
【十二】springboot整合线程池解决高并发(超详细,保你理解)
【十三】springboot整合异步调用并获取返回值(超详细)
【十四】springboot整合WebService(超详细)
【十五】springboot整合WebService(关于传参数)(超详细)
【十六】springboot整合WebSocket(超详细)
【十七】springboot整合WebSocket实现聊天室(超详细)
【十八】springboot实现自定义全局异常处理
【十九】springboot整合ElasticSearch实战(万字篇)
【二十】springboot整合过滤器实战
【二十一】springboot整合拦截器实战并对比过滤器
【二十二】springboot整合activiti7(1) 实战演示篇
【二十三】springboot整合spring事务详解以及实战
【二十四】springboot使用EasyExcel和线程池实现多线程导入Excel数据
【二十五】springboot整合jedis和redisson布隆过滤器处理缓存穿透
介绍:接下来我会把学习阶段学到的框架等知识点进行整合,每一次整合是在前一章的基础上进行的,所以后面的整合不会重复放前面的代码。每次的demo我放在结尾,本次是接着上一章的内容延续的,只增加新增的或者修改的代码。
上一章对全局异常进行了整合,可以处理统一抛出错误。
1、这章整合redis,用redis存储token,实现一个用户只保存一个token,登录接口再次获取一个新的token后,前一个token则无法使用,解决一个用户可以多次登录的问题。
2、实现用户登录3次就锁定用户账户,无法再请求登录接口。
qq交流群导航——>231378628
先展示一下目录结构:
第一步:修改yml配置文件
注意:是在spring:下面,database是选择存在第几个库,如下:
此处我选择的是“1”,所以存在为“1”的库。
redis的密码在安装时已经设置,也可以为空。若未安装redis,请在csdn寻找大佬的安装教程,不复杂。
第二步:新增redis操作工具类
@Component
public class RedisUtils {@Autowiredprivate RedisTemplate<String, String> redisTemplate;/*** 读取缓存** @param key* @return*/public String get(final String key) {return redisTemplate.opsForValue().get(key);}/*** 写入缓存*/public boolean set(final String key, String value) {boolean result = false;try {redisTemplate.opsForValue().set(key, value);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 写入缓存,并设置过期时间** @param key* @param value* @param timeout* @param unit* @return*/public boolean set(final String key, String value, long timeout, TimeUnit unit) {boolean result = false;try {redisTemplate.opsForValue().set(key, value, timeout, unit);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 更新缓存*/public boolean getAndSet(final String key, String value) {boolean result = false;try {redisTemplate.opsForValue().getAndSet(key, value);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 删除缓存*/public boolean delete(final String key) {boolean result = false;try {redisTemplate.delete(key);result = true;} catch (Exception e) {e.printStackTrace();}return result;}
}
不一定用这个,网上到处有很多更详细的工具类,按需使用。
第三步:改造token拦截器
原来的代码(上几章都有代码):
改造:
注入redis工具类。
修改方法。
到此实现了一个用户只存在一个token的效果,下面改造登录实现类代码,如下:
把登陆失败的次数存入redis,若达到3次则直接抛出异常,不再请求接口。
第三步:演示
输入正确账号密码。
将此token拿去请求接口,请求成功
重新请求登录接口,生成新的token,拿去请求刚才的接口,新token可以请求成功,旧的token无法再请求成功。
用正确的账户错误的密码登录。
错误三次之后。
本期整合到此完毕,接下来会继续更新加强整合,尽情期待。
访问地址:http://localhost:8088/swagger-ui.html或者http://localhost:8088/doc.html
demo地址:studydemo/整合swagger at main · zrc11/studydemo · GitHub
码字不易,若帮到各位,帮忙三连,感谢
【七】springboot整合redis(超详细)相关推荐
- SpringBoot整合Mybatis超详细流程
SpringBoot整合Mybatis超详细流程 文章目录 SpringBoot整合Mybatis超详细流程 前言 详细流程 0.引入Mybatis 1.创建数据 2.创建程序目录 3.理解后台访问流 ...
- 一篇掌握SpringBoot+SpringCache+Redis超详细实例
1.创建maven项目 2.pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xml ...
- SpringBoot整合SpringSecurity [超详细] (一)入门案例
文章目录 前言 1. 主流安全框架有哪些 2. Spring Security为什么越来越火 3. 为什么现在越来越多的人选择Spring Security 一.Spring Security 简介 ...
- 《SpringBoot篇》26.SpringBoot整合Jackson超详细教程(附Jackson工具类)
陈老老老板
- SpringBoot 整合 Redis 使用详解(StringRedisTemplate 和 RedisTemplate 对比分析)
背景: 最近项目采用前后端分离的架构,单点登录系统采用Redis存储用户session信息,在这里总结下springboot整合redis的详细过程,以及部分源码分析 1.前期准备 首先保证安装好re ...
- Redis超详细学习
Redis超详细学习 一.Redis入门 Redis是什么? Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内 ...
- SpringBoot整合redis实现简单的操作demo
SpringBoot中整合Redis 将用户频繁访问的内容存放在离用户最近,访问速度最快的地方,提高用户的响应速度,今天先来讲下在springboot中整合redis的详细步骤. 1.安装步骤 安装步 ...
- SpringBoot整合Redis+mybatis,封装RedisUtils工具类等实战(附源码)
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作者:陈彦斌 cnblogs.com/chenyanbin/ ...
- SpringBoot第九篇: springboot整合Redis
这篇文章主要介绍springboot整合redis,至于没有接触过redis的同学可以看下这篇文章:5分钟带你入门Redis. 引入依赖: 在pom文件中添加redis依赖: <dependen ...
最新文章
- Django博客系统(博客保存)
- iOS10 推送必看 UNNotificationContentExtension
- Postgres-XL部署记录(一)
- xftp传输文件错误解决办法
- xay loves or 异或
- Hi3516A开发-- OSD功能实现
- 2017年第1贴:EXT.JS使用MVC模式时,注意如何协调MODEL, STORE,VIEW,CONTROLLER的关系
- java获取请求的url地址
- 同一个页面同时get post_get与post的区别
- C#生成CHM文件(应用篇)
- MemSQL分布式架构介绍(二)
- python保存h264格式视频(linux和windows)
- 一个权限管理系统设计案例
- python动作捕捉_打破价格垄断,工程师自制动作捕捉系统-嵌入式系统-与非网
- pnpm安装使用教程以及pnpm node版本管理以及EPERM operation not permitted symlink问题解决
- 西南大学计算机学院推免,2019年西南大学计算机与信息科学学院硕士研究生拟录取名单的公示(不含推免生)...
- Android画板开发(二) 橡皮擦实现
- CDR2023软件最新版有哪些新增功能?
- 使用unittest框架做单元测试------基础版本
- 电脑网页如何安装扩展插件在线观看抖音短视频
热门文章
- mysql 连接方法_MySQL 四种连接方式(通信方式)
- iOS RTMP 视频直播开发笔记(3)- 了解 H.264 编码
- 解决angularjs图片加载失败
- 【C++ 11】 error C3861: ‘_beginthreadex‘: identifier not found
- 非主流大数据技术工具,主要有哪几个?
- 2021年六一儿童节,有哪些想送给孩子们的祝福?
- 离散数学学习笔记——第五讲——谓词逻辑(第二部分)(3.8 前束范式)
- 今天是某年、某月、某日
- overwrite java_Java中的Override, Overload和Overwrite
- 闲云控制台(一)控制台命令解析框架