七叶笔记 » 数据库 » Redis实现短信登录的企业实战

Redis实现短信登录的企业实战

一、导入黑马点评项目

黑马点评项目主要包括以下功能:

这一章主要介绍短信登录功能,短信登录功能是基于Redis的共享session实现的

1. 导入SQL

需要项目资料的私信我

其中的表有:

tb_user:用户表tb_user_info:用户详情表tb_shop:商户信息表tb_shop_type:商户类型表tb_blog:用户日记表(达人探店日记)tb_follow:用户关注表tb_voucher:优惠券表tb_voucher_order:优惠券的订单表

注意:Mysql的版本采用5.7及以上版本

2. 前后端分离

3. 导入后端项目

3.1 将后端项目导入到 Idea 中

3.2 注意:修改application.yaml文件中的mysql、redis地址信息 将mysql、redis地址信息修改为自己的信息

3.3 启动项目 启动项目后,在浏览器访问:http://localhost:8081/shop-type/list ,如果可以看到数据则证明运行没有问题

4. 导入前端项目

4.1 导入nginx文件夹 将nginx文件夹复制到任意目录,要确保该目录不包含中文、特殊字符和空格,例如:

4.2 运行前端项目 在nginx所在目录下打开一个CMD窗口,输入命令启动nginx:

start nginx.exe

打开chrome浏览器,在空白页面点击鼠标右键,选择检查,即可打开开发者工具:

然后访问: http://127.0.0.1:8080 ,即可看到页面:

二、基于Session实现登录流程

后端将生成的验证码和用户信息保存到session中,并将sessionId返回给前端保存到cookie中用户登录时,会携带cookie向后端发起请求,后端进行校验时,从cookie中获取sessionId,通过sessionId可以从session中获取用户信息并保存到ThreadLocal中后续每个线程都有一份ThreadLocal中的用户副本信息,不同线程拿到用户信息后可以实现不同的操作,从而起到线程隔离作用

1. 发送短信验证码

主要代码:

2. 短信验证码登录、注册

主要代码:

UserController

UserServiceImpl

3. 登录验证功能

用户请求登录时,会携带cookie,cookie中包含JSEESIONID

为了避免用户请求每个controller时,每次都去校验用户信息,所以可以加拦截器

拦截器只需在用户请求访问时,校验一次后将用户信息保存到ThreadLocal中,供后续线程使用

主要代码:

在工具类中编写ThreadLocal

在工具类中编写登录拦截器

在配置类中添加拦截器配置类

UserController

三、集群的session共享问题

四、基于Redis实现共享session的登录功能

1. 选择合适的数据结构存入Redis 手机号作为key,String类型的验证码作为value用户登录时正好会提交手机号,方便通过Redis进行校验验证码

token作为key,Hash类型的用户信息作为value

后端校验成功后,会返回token给前端,前端会将token保存到sessionStorage中(这是浏览器的存储方式),以后前端每次请求都会携带token,方便后端通过Redis校验用户信息

前端代码:将后端返回的token保存到sessionStorage中

前端每次请求时,都会通过拦截器将token设置到请求头中,赋值给变量authorization,后端通过authorization获取前端携带的token进行校验

2. 发送短信验证码

修改之前代码,将验证码存入Redis

3. 短信验证码登录、注册 修改之前代码,从Redis获取验证码并校验随机生成token,保存用户信息到redis中,返回token

4. 解决token刷新问题 token刷新问题是指,用户长时间不进行界面操作时,到了过期时间,token自动失效;但是,用户一旦进行操作,就需要给token续期,即更新token过期时间为了解决token刷新问题,需要加2个拦截器第一个拦截器可以拦截所有请求,只要用户有请求就刷新token,并保存用户信息到ThreadLocal中第二个拦截器只对登录请求进行拦截,从ThreadLocal中获取用户信息进行校验

刷新token的拦截器代码:

登录拦截器的代码:

到此这篇关于Redis实现短信登录的企业实战的文章就介绍到这了,更多相关Redis 短信登录 内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章