Springboot实战——黑马点评之短信登录

黑马点评(一)——短信登录功能

  • 短信登录:redis的共享session (已完成)
  • 商户查询缓存:企业的缓存使用场景、缓存雪崩、穿透问题(已完成)
  • 达人探店:基于list的点赞列表、基于sortedSet的点赞排行榜(已完成)
  • 优惠券秒杀:Redis的计数器、Lua脚本Redis、分布式锁、Redis的三种消息队列(已完成)
  • 好友关注:基于Set集合的关注、共同关注(已完成)
  • 附近商户:Redis的GeoHash的应用(已完成)
  • 用户签到:Redis的BitMap数据统计,节省数据内存(已完成)
  • UV统计:Redis的HyperLoglog的统计

0 Mysql部署

参考 https://blog.csdn.net/cruiserblog/article/details/106934570

sudo apt-get update  #更新源
sudo apt-get install mysql-server #安装
systemctl status mysql # 查看mysql状态
sudo service mysql start # 启动mysql service
sudo mysql -u root -p  # -u 指定用户名 -p需要输入密码(123456)
sudo mysql # 可以不指定密码

使用windows端的mysql workbench访问连接云服务器的mysql
如果连接失败(没有报权限错误),参考 https://blog.csdn.net/bean_business/article/details/113402326, 连接成功
下次重新进入mysql时需要输入
sudo mysql -u root -p; 等待输入密码123456

0 Redis部署

参考 https://blog.csdn.net/fgsdgsdghdsfgrd/article/details/132027527 配置完后台运行后,要先杀掉对应的进程才能使用systemctl来启动redis

#启动
sudo systemctl start redis
#停止
sudo systemctl stop redis
#重启
sudo systemctl restart redis
#查看状态
sudo systemctl status redis

如果出现报错:redis.service - redis-server Loaded: loaded (/etc/systemd/system/redis.service; disabled; vendor preset: enabled) Active: failed (Result: exit-code) since Mon 2024-12-16 17:38:57 CST; 2s ago Process: 83408 ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf (code=exited, status=0/SU> Main PID: 83409 (code=exited, status=1/FAILURE) CPU: 14ms
参考 https://blog.csdn.net/Wolf__king/article/details/130541126
下载redis可视化工具

1 项目准备

1.1 导入数据库

运行hmdp.sql

2 设计短信验证登录功能逻辑

1)验证码发送

2) 验证码验证登录/注册

优化点(a):DTO类

Q:如果把当前登录的用户实体全部存入session中,存在信息冗余以及信息隐私性问题
A:封装一个UserDto类来显示user的部分非隐私信息,相应ThreadLocal的类型也改为UserDto

优化点(b):使用Redis来代替共享session存储待验证的数据和用户信息



前端携带token处理请求的逻辑:

3) 登录验证功能

验证原理:
用户请求会带上cookie,用户登录的凭证存在cookie的JSEIIONID中,带着JSEIIONID到session中即可查到用户信息,放行用户进入系统

(session是tomcat的内存空间,且每个用户使用浏览器登录都持有自己的session,创建session时自动创建sessionid存在浏览器的cookie里)
设置springmvc中的拦截器统一判断请求是否通过,放在controller之前执行。拦截下的用户信息传给controller使用:用户信息暂存在threadlocal,每一个请求即一个独立的线程,保存在threadlocal中,确保线程安全性




优化点(c):

posted @ 2024-08-16 17:04  CandyWang-  阅读(68)  评论(0编辑  收藏  举报