当前位置: 首页 > news >正文

SpringBoot+Redis+Mybatis-plus黑马点评

短信登录

基于Session实现登录

流程:

发送短信验证码-->短信验证码注册登录-->校验登录状态(保存用户到ThreadLocal,方便后续使用)

不能每次请求服务都要进行登录状态校验,解决办法:拦截器

在Spring框架中,拦截器(Interceptor)可以通过实现HandlerInterceptor接口或继承HandlerInterceptorAdapter类来实现。拦截器通常用于在请求到达控制器之前进行预处理,例如身份验证、权限检查等。

1.创建拦截器(拦截器需要实现HandlerInterceptor接口,并重写方法)

2.注册拦截器(通过WebMvcConfigurer接口来注册拦截器。)

3.配置拦截器的排除路径(在实际应用中,某些接口(如登录、注册接口)不需要进行身份验证)

区分一下session,cookie和token

CookieCookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来,服务不保存。每次请求时客户端带上cookie。服务器检查该Cookie,以此来辨认用户状态。

Session: 服务器在处理客户端请求过程中会创建session,并且为该session生存唯一的session ID。

服务器将session ID发送到客户端.当客户端再次请求时,就会带上这个session ID.服务器接收到请求之后就会一句Session ID 找到相应的Session ,完成请求.session是服务本地保存,发给客户端,客户端每次访问都带着,直接和服务的session比对

Token:Token是服务端生成的一串字符串,当作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token并将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码.token是 服务经过计算发给客户端的,服务不保存,每次客户端来请求,经过解密等计算来验证是否是自己下发的.

JWT:JWT不仅仅是一个生成Token的过程,它还提供了一种结构化、自包含、无状态的Token设计。验证Token时,服务器不需要查询数据库,直接解析和验证签名即可。

机制

存储位置

通信方式

生命周期

Cookie

浏览器

自动Header携带

可设置过期时间

️ Session

服务端

SessionID传递

服务端控制

Token

客户端

手动Header添加

令牌有效期决定

️ JWT

客户端

Bearer Token

包含过期时间声明

集群Session共享问题

session的痛点(负载均衡导致的)

多态Tomcat并不共享session存储空间,当请求切换到不同tomcat服务时导致数据丢失的问题

基于Redis实现共享session登录

发送验证码逻辑实现:

1.校验手机号

2.不符合返回错误信息

3.符合生成验证码

4.保存验证码到redis

5.发送验证码

登录验证逻辑:

1.校验手机号

2.不符合返回错误信息

3.从redis中获取验证码并校验

4.不一致报错,一致,根据手机号查询用户

5.判断用户是否存在

6.保存用户信息到redis

6.1随机生成token,作为登录令牌

6.2将User对象转为Hash存储

6.3存储

7.返回token

商户查询缓存

优惠劵秒杀

达人探店

好友关注

附近的商户

用户签到

UV统计

相关文章:

  • Java多线程与高并发专题——深入ReentrantReadWriteLock
  • Vue3 Composition API与十大组件开发案例详解
  • 千峰React:案例二
  • DeepSeek实战
  • 51c自动驾驶~合集22
  • 蓝桥杯web第三天
  • 《Python实战进阶》No 8:部署 Flask/Django 应用到云平台(以Aliyun为例)
  • FFmpeg入门:最简单的音频播放器
  • 前端实现上传图片到OSS(Vue3+vant)
  • 网络安全深度剖析
  • GPIO(嵌入式学习)
  • 当AI重构认知:技术狂潮下的教育沉思录
  • 信息学奥赛一本通(C++版)
  • java容器 LIst、set、Map
  • html+js 轮播图
  • Seaborn知识总结
  • ESP32+Mixly-WiFi
  • 22-接雨水
  • Deepseek Api Function Calling解析(tools、tool_calls)Deepseek函数调用流程图、Python代码示例
  • 游戏引擎学习第131天
  • 广告传媒公司起名/飞猪关键词排名优化
  • html全屏网站/百度排名点击器
  • 西丽做网站/成都百度推广和seo优化
  • 网站建设详细教程/镇江网站建站
  • 凡科建站官网/网络营销的方法有哪些?
  • sns社交网站 建设文档/中国软文网官网