短信登录
安装 redis
目标
- 在 centos7 系统中安装和配置 redis 数据库,并使用 redis desktop manager 连接到 redis
步骤
- redis 是基于 c 语言编写的,首先需要安装 gcc 依赖
yum install -y gcc tcl
- 将 redis 安装包上传至虚拟机的 /usr/local/src 目录下并解压
- 解压缩:
tar -xzf redis-6.2.6.tar.gz
- 解压缩:
- 进入 redis 目录
cd redis-6.2.6
- 运行编译命令
make && make install
- 默认安装路径在
/usr/local/bin目录下 - 测试 redis 能否正常启动
redis-server
- 配置 redis
- 备份配置文件:
cp redis.conf redis.conf.bck - 修改 redis.conf 文件中的配置
- 备份配置文件:
- 设置开机自启
- 新建一个系统服务文件:
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
- rdm 连接 redis
- 关闭防火墙:
systemctl stop firewalld - 正常连接即可
- 关闭防火墙:
导入项目
导入 mysql 表
- 在 idea 中执行资料中的 hmdp.sql 文件
导入后端项目
修改配置文件
- 更改数据库的地址和用户名密码
部署前端项目
- 地址:localhost:8080
基于 session 实现登录
发送短信验证码
- controller 层
- service 层
- 校验手机号的正则表达式
短信验证码登录、注册
- controller 层
- service 层
- mapper 层
校验登录状态
- 编写拦截器代码
- 注册拦截器、配置拦截路径
- 查询登录状态
集群的 session 共享问题
- 问题:
- 多台 tomcat 并不共享 session 存储空间,当请求切换到不同 tomcat 服务时导致数据丢失的问题
- session 替代方案应该满足
- 数据共享
- 内存存储
- key、value 结构
- redis 集群!!!
基于 redis 实现 session 登录
修改代码
-
更新发送手机验证码的代码
- @Reousrce 注解
- 设置常量类提升代码规范性
- 修改后代码
-
更新注册和登录功能代码
- 更新 UserServiceImpl 中的 login 方法
- 更新 LoginInterceptor 中的代码
登录拦截器的优化
- 逻辑:
- 使用两个优先级不同的拦截器
- 负责拦截所有请求并刷新 token 有效期
- 负责拦截需要登录的路径
- 使用两个优先级不同的拦截器
- token 刷新拦截器(不负责拦截)
- 登录拦截器(负责拦截)
- MvcConfig(配置优先级)