Redis05-短信登陆
短信登陆
导入的表格
- tb_user:用户表
- tb_userLinfo:用户详情表
- tb_shop:商户信息表
- tb_shop_type:商户类型表
- tb_blog:用户日记表(达人探店日记)
- tb_follow:用户关注表
- tb_voucher:优惠券表
- tb_voucher_order:优惠券的订单表
为什么使用Redis
1.怎么基于session
2.验证码如何比对
3.是否要将所有的数据存入session?
==集群的session共享问题==
session共享问题:多台Tomcat并不共享session存储空间,当请求切换到不同tomcat服务时导致数据丢失的问题。
session的替代方案应该满足:
- 数据共享
- 内存存储
- kev、value结构(和session一样)
使用Redis!
首先每个Tomcat可以去访问Redis,Redis是内存存储的,且Redis就是key,value结构
问题:
- 保存验证码
存储在Redis中类型:String,那么key是什么?手机号(确保每个手机号有自己的验证码,不仅可以
- 保存用户信息
存储在Redis中类型:Hash,那么key是什么?==手机号(不推荐,放在请求头中,有暴露的风险) 建议随机token==
(保存登录的用户信息,可以使用String结构,以SON字符串来保存,比较直观,
Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD,并且内存占用更少)
- 登陆校验
不再是sessionid,token才是登录凭着,但是token不是自动存储在浏览器,需要手动返回到浏览器。
==可以给验证码设置有效期,放在内存满==
==注意像session(默认30min)一样给登陆时间做一个有效期,要不然登陆信息越来越多,最后会把redis装满==
==另一个问题,有效期30min,从登陆开始算起,只要登陆了30min后就会踢出,那么如何访问刷新有效期?拦截器!==
==上个问题可以在prehandle中修改,获取请求头的token,
preHandle |
Redis代替session需要考虑的问题:
- 选择合适的数据结构
- 选择合适的key
- 选择合适的存储粒度
==拦截器问题==
拦截器拦住了需要登录的路径,若一直访问不需要登陆的网页则不会刷新,怎么办?
如何控制拦截器顺序?
.order属性
例如:
|
order越小越先执行
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 玖!
评论