用户登入逻辑
创始人
2025-05-29 14:58:07

注:该文章基于黑马程序员中《黑马点评》软件的学习

代码资料
提取码:eh11
主要涉及的代码

MvcConfig
UserController
UserDTO
User
IUserService
UserServiceImpl
LoginInterceptor
RefreshTokenInterceptor
业务过程

1.在界面输入电话号码
2.后台验证电话号码的正确性,发送生成的验证码
3.通过验证码和电话号码比对进行登入
在这里插入图片描述
4.登入后根据用户判断用户是否浏览界面来刷新redis中的token有效期

个人记录内容

关于sendCode方法的记录:

1.用户输入电话号码后,通过调用RegexUtils类中验证电话号码正确性的方法基础判断电话号码是否虚假
2.因为在多台服务器的情况下用session来存储信息,会存在存储浪费,这里的redis存储验证码加手机号和后面的redis存储token是一样的道理,运用redis存储2分钟时效的验证码。
在这里插入图片描述

关于login方法的记录

1.login方法的服务是在用户输入验证码和手机号后开启的
2.该方法再次判断手机格式是否正确,然后判断根据手机号查找redis中是否存储对应的验证码值,目的是为了防止第二次收到的手机号码和上一次获取验证码的手机号码不是同一个。
在这里插入图片描述
3.通过验证后,判断是否是新用户,是新用户创建用户信息存入数据库(真正的业务需再拓展)
4.生成token作为用户的登入凭证,如果直接使用电话号码的话会存在泄露用户信息的可能。为了减少用户信息返回给前端,使用UserDTO类存储部分用户信息来存储在redis中
5.在redis中用hashMap的类型存储,token值做key,UserDTO类做value
并设置在redis中的存储时间,后面有拦截器来刷新用户在redis中token的有效时间来判断用户是否还在程序中浏览。
在这里插入图片描述
在这里插入图片描述

关于拦截器的记录

1.俩个拦截器,一个拦截全部界面用来刷新redis中token的存储时间(为了避免用户在不需要登入的界面浏览过久,导致没有促发刷新token的情况),另一个用来判断用户是否是登入过的用户。
在这里插入图片描述
在这里插入图片描述

2.注册拦截器,将全部拦截的拦截器注册为优先触发

public class MvcConfig implements WebMvcConfigurer {@Resourceprivate StringRedisTemplate stringRedisTemplate;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).excludePathPatterns("/shop/**","/voucher/**","/shop-type/**","/upload/**","/blog/hot","/user/code","/user/login").order(1);//用来刷新token的有效期registry.addInterceptor(new RefreshTokenInterceptor(stringRedisTemplate)).addPathPatterns("/**").order(0);}}

相关内容

热门资讯

今年我省粮食产量达515.56... (来源:辽宁日报)转自:辽宁日报 图为在中储粮(盘锦)储运有限公司,装运粮食的重型卡车排起长队...
国家发展改革委部署促进投资止跌... (来源:辽宁日报)转自:辽宁日报 新华社北京12月13日电 (记者魏玉坤) 记者13日从全国发展和改...
江苏省实施《中华人民共和国森林... (来源:新华日报) 目 录 第一章 总则 第二章 森林、林木和林地权属管理...
姜堰数字化产品讲“活”理论 (来源:新华日报) □ 本报记者 卢佳乐 通讯员 姜宣 “王教授,您约我‘喝茶论道’,...
联合国维和部队在苏丹遇袭 6人... 转自:财联社【联合国维和部队在苏丹遇袭 6人死亡】财联社12月14日电,当地时间13日,苏丹武装部队...