黑马点评(一)——短信登录功能
- 短信登录:redis的共享session (已完成)
- 商户查询缓存:企业的缓存使用场景、缓存雪崩、穿透问题
- 达人探店:基于list的点赞列表、基于sortedSet的点赞排行榜
- 优惠券秒杀:Redis的计数器、Lua脚本Redis、分布式锁、Redis的三种消息队列
- 好友关注:基于Set集合的关注、共同关注
- 附近商户:Redis的GeoHash的应用
- 用户签到:Redis的BitMap数据统计,节省数据内存
- UV统计:Redis的HyperLoglog的统计
1 项目准备
1.1 导入数据库
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中,确保线程安全性