Redis技术学习|实战项目记录|短信登录(重点:拦截器)+ Redis代替session存储用户登录信息

学习资料声明

黑马程序员的Redis学习视频:黑马程序员Redis入门到实战教程
需要用到的知识:linux(推荐韩顺平老师的教程,学到p30,创建好虚拟机和简单的几个命令就好。)SSM。SpringBoot。
还用到了MybatisPlus(还没学。)

短信登录

1.整体思路

在这里插入图片描述

2.使用session实现

2.1 申请验证码请求

接口:请求格式在这里插入图片描述
在这里插入图片描述

2.2 登录请求

在这里插入图片描述

重点在于为什么这里不需要像其他项目那样返回了一个jwt令牌作为登录凭证:因为是基于session实现的登录,session自带一个以cookie形式存在于交互的sessionID。

2.3 登录验证|拦截器

在这里插入图片描述
这拦截器的使用需要好好复习一下,首先分两部分(拦截器本身+注册拦截器)

public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {HttpSession session = request.getSession();Object user = session.getAttribute("user");if(user == null){response.setStatus(401);//未授权return false;}UserHolder.saveUser((UserDTO) user);return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {UserHolder.removeUser();}
}

注册拦截器

@Configuration
public class MvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).excludePathPatterns("/user/code","/user/login");}
}

2.4 集群的session共享问题

在这里插入图片描述
session本身有提供session共享的功能,但是因为拷贝延迟和内存浪费的问题就无法流行使用。
在这里插入图片描述

3.基于Redis实现共享Session

3.1怎么设计redis存储数据格式选择和key的选择

token可以直接使用string。
用户信息的话,需要使用Hash。

3.2具体实现过程和基础篇一致。

3.3额外要注意如何模拟Session的生存周期

在Login的拦截器之前设置一个拦截器拦截所有请求,更新时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

富格林:合理规避虚假风险安全盈利

富格林悉知,黄金投资不仅具有强大的保值功能,其剧烈的市场变化也隐含着巨大的盈利潜力,吸引着众多投资者入市。但投资都会存在一定的风险,因此大家在投资的过程中要学习总结一些技巧,以便能在必要时帮助投资者规避虚假…

linux系统kubernetes容器检查和恢复机制

容器检查和恢复机制 容器检查和恢复机制命令模式探针http get方式探针POD 的恢复策略 容器检查和恢复机制 在kubernetes中,可以为容器定义一个健康探针,kubelet 就会根据这个 Probe 的返回值决定这个容器的状态,而不是直接以容器是否运行&…

5G里面NR,gNB,en-gNB,ng-eNB是什么意思

不得不提一个国际组织,叫国际电信联盟(ITU, International Telecommunication Union),简称国际电联。我们先看看国际电联的自我介绍: 国际电信联盟 『国际电联 (国际电信联盟) 是主管信息通信技术事务(ICT)的联合国机…

微信打卡小程序怎么做_用户的每日习惯培养神器

微信打卡小程序:你的每日习惯培养神器 在这个快节奏的现代社会,我们每天都在忙碌中度过,有时候甚至会忘记自己曾经立下的那些小目标、小习惯。然而,随着科技的不断发展,微信打卡小程序的出现,为我们的生活…

Apollo(阿波罗)配置中心

Apollo(阿波罗)配置中心: 采用分布式架构,它能够集中管理不同环境、不同集群的配置,配置修改后能够实时推送到应用端,有可视化界面 和 规范的权限,支持 版本管理、灰度发布、监控 等功能。 主要…

早期零撸项目,预注册即将截止, AI身份项目GenomeFi明牌空投教程

简介:GenomeFi基金会旨在用个人基因信息推动生物产业发展,他们通过AI大数据平台和区块链技术验证身份、保护个人信息、提升收入。GenomeFi和CLINOMICS(一家基于基因组学疾病早期诊断的领先公司)合作提供基因诊断、早期疾病检测、个…

朋友圈之于私域的意义

朋友圈作为社交媒体的一种,是品牌主进行私域流量营销的主要载体,具有推动产品销售、传播信息等多种作用。具体来说,朋友圈在私域中的意义可以体现在以下几个方面: 1. 传播信息:朋友圈可以成为品牌主向其潜在客户传递信…

面试算法-63-全排列

题目 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 解 class Solution {public List&l…

前端学习笔记|CSS基础

css学习 中文学习网站 https://www.w3school.com.cn/ 非语义化的标签 1.div 2.span 类型选择器 类型选择器有时也叫做“标签名选择器*”*或者是”元素选择器“,因为它在文档中选择了一个 HTML 标签/元素 类选择器 类选择器以一个句点(.&#xff…

Leetcode 202:快乐数

编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&#xff0c…

2024年运维相关面试题

SLA 关键词 负责系统的 SLA 代码维护、迭代更新,保证任务质量和交付及时性;推动提升服务的可靠性、可扩展性以及性能优化,保障系统 SLA为系统提供基础设施 SLA 保障 SLA保障:服务质量保障 sla 保障建设,目前一是将故…

代码随想录阅读笔记-字符串【重复的子字符串】

题目 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 示例 1: 输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。 示例 2: 输入: "aba…

爬虫入门系列-HTML基础语法

🌈个人主页:会编辑的果子君 💫个人格言:“成为自己未来的主人~” HTML基础语法 bs4解析比较简单,但是呢,首先你需要了解一丢丢的html知识,然后再去使用bs4去提取,逻辑和编写难度就会非常简…

【笔试】银行校招,信息科技岗 金融科技岗笔试准备方向

【笔试】银行校招,信息科技 & 金融科技岗笔试准备方向 文章目录 1、银行招聘流程(投递)2、笔试内容分析(笔试)3、真题题库(BOC)3.1 职业能力(行测)3.2 英语3.3 信息科…

敏捷开发最佳实践:学习与改进维度实践案例之会诊式培养敏捷教练

自组织团队能够定期反思并采取针对性行动来提升人效,但2022年的敏捷调研发现,70%的中国企业在学习和改进方面仍停留在团队级。本节实践案例将分享“会诊式培养敏捷教练”的具体做法,突出了敏捷以人为本的学习和改进,强调了通过人员…

JNI入门学习 管理和配置的工具选择[二]

在Android开发中,你可以使用 CMake 或者 Android.mk 来编写 JNI 的代码。这两者都是用来管理和配置 JNI 层代码的工具,选择使用哪一个取决于你的喜好以及项目的需求。 使用 CMake 的优点: 现代性:CMake 是一种现代的、跨平台的构建…

大模型-Prompt-API介绍

GPT-3.5 API 提供了一个名为 openai.ChatCompletion.create() 的端点,您可以使用该端点来与 ChatGPT 进行交互。以下是 openai.ChatCompletion.create() 的详细 API 说明: 请求参数: messages:一个数组,包含对话中的消…

javaweb遇到的servlet问题,jar包问题

有时候会遇到这种问题,有的地方会报红 这是因为这个找不到这个包,这个项目缺少jar包 在tomcat9之前还不是Jakarta这个名字,我的运行环境与服务器是jdk17与tomcat10 解决方法: 在项目结构中,找到模块,再…

nacos 更新报错“发布失败。请检查参数是否正确”

文章目录 🔊博主介绍🥤本文内容起因解决方案结果 📢文章总结📥博主目标 🔊博主介绍 🌟我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华…

android 网络检测简单方法

如果连接的WiFi没有网络,无法通过简单的网络状态检查来判断其可用性。在这种情况下,你可以尝试使用以下方法来检测当前连接的WiFi是否可用: Ping测试:尝试通过向一个已知的可靠服务器发送Ping请求来检测连接的WiFi是否可用。如果…