Redis 实战项目(一) -- 短信登录

短信登录

安装 redis

目标

  • 在 centos7 系统中安装和配置 redis 数据库,并使用 redis desktop manager 连接到 redis

步骤

  1. redis 是基于 c 语言编写的,首先需要安装 gcc 依赖
    • yum install -y gcc tcl
  2. 将 redis 安装包上传至虚拟机的 /usr/local/src 目录下并解压
    • 解压缩:tar -xzf redis-6.2.6.tar.gz
  3. 进入 redis 目录
    • cd redis-6.2.6
  4. 运行编译命令
    • make && make install
  5. 默认安装路径在 /usr/local/bin 目录下
  6. 测试 redis 能否正常启动
    • redis-server
  7. 配置 redis
    • 备份配置文件:cp redis.conf redis.conf.bck
    • 修改 redis.conf 文件中的配置
  8. 设置开机自启
    • 新建一个系统服务文件:vi /etc/systemd/system/redis.service
js 复制代码
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true 

[Install]
WantedBy=multi-user.target
  • 重载系统服务:systemctl daemon-reload
  • 开机自启:systemctl enable redis
  1. rdm 连接 redis
    • 关闭防火墙:systemctl stop firewalld
    • 正常连接即可

导入项目

导入 mysql 表

  • 在 idea 中执行资料中的 hmdp.sql 文件

导入后端项目

修改配置文件

  • 更改数据库的地址和用户名密码

部署前端项目

  • 地址:localhost:8080

基于 session 实现登录

发送短信验证码

  • controller 层
  • service 层
  • 校验手机号的正则表达式

短信验证码登录、注册

  • controller 层
  • service 层
  • mapper 层

校验登录状态

  • 编写拦截器代码
  • 注册拦截器、配置拦截路径
  • 查询登录状态

集群的 session 共享问题

  • 问题:
    • 多台 tomcat 并不共享 session 存储空间,当请求切换到不同 tomcat 服务时导致数据丢失的问题
  • session 替代方案应该满足
    1. 数据共享
    2. 内存存储
    3. key、value 结构
  • redis 集群!!!

基于 redis 实现 session 登录

修改代码
  1. 更新发送手机验证码的代码

    • @Reousrce 注解
    • 设置常量类提升代码规范性
    • 修改后代码
  2. 更新注册和登录功能代码

  • 更新 UserServiceImpl 中的 login 方法
  • 更新 LoginInterceptor 中的代码

登录拦截器的优化

  • 逻辑:
    • 使用两个优先级不同的拦截器
      1. 负责拦截所有请求并刷新 token 有效期
      2. 负责拦截需要登录的路径
  • token 刷新拦截器(不负责拦截)
  • 登录拦截器(负责拦截)
  • MvcConfig(配置优先级)
相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
大勇前进3 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu3 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile3 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白803 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端
二月龙3 天前
PHP 接口返回统一响应封装,让前后端对接更省心
后端
盖伦发发3 天前
软件工程SOLID 五大设计原则
后端·软件工程