如有侵权立马删除!!!!!!!
一、实战篇课程介绍
选择黑马点评项目进行redis实战篇的应用。
社交类的项目里面对redis的应用非常丰富。
还有电商类的业务场景
把redis中各种数据结构都应用到了。
e0d942d568de4b90a0f992ef46296e51.png
ec5c54c295024a1596708ebb469a6030.png
项目架构
cac6878ce8e54958a7ef473dcb916d57.png
二、导入黑马点评项目
导入后端项目
173cff511ad44fb188982abe7226a0ee.png
http://localhost:8081/shop-type/list
导入前端项目
c9561f649efb46bb856c0bee7bf1510c.png
0b2eb411e5fd4714bf6a77cdcc8bfcc1.png
三、基于Session实现短信登录流程图
8b9397cfa5384ad18022d68f32da59d3.png
四、基于Session实现发送短信验证码的功能
e453da211d69406ebc71a1b38df70d2d.png
五、基于Session实现验证码登录
84e4a8cd25c54425a65147ce854170f8.png
六、 基于Session实现登录验证功能
e5aa389f6f504a558b324029cf5645b0.png
d040cf9514c84ecbb1f51a52c94444c4.png
81c507f305b547e8b6008f5f6e9b5bc5.png
七、隐藏用户敏感信息(User类转UserDTO)
8b787bf157894157b1e482a47c66cb81.png
八、短信登录Session共享的问题分析
e020d5eb717a491aa65a0fe1045dff4c.png
九、基于 Redis代替Session的业务流程
保存验证码。使用字符串类型
key 是手机号
value 是验证码
31084af3a96442bbbefbbe34c1c9f5eb.png
2768f081251b4217a9079e5cd7c21a2e.png
保存用户信息到redis
推荐使用哈希结构
key 是token。随机字符串
value 是用户信息。
方便客户端提取到用户信息进行登录校验。
Session的话(登录凭证)
Tomcat会自动把SessionId写到浏览器的Cookie里。每次请求。带着Cookie,就带着SessionId来了。根据SessionId找到Session。从而找到用户。这里的SessionId就是登录凭证。
Redis的话(登录凭证)
现在的登录凭证就是token。因此以后用户来访问就要带着token。我们需要手动将token返回给客户端。客户端把这个token保存下来。这样以后每次请求就携带token了。服务器看到客户端拿到token。服务器就可以基于token。拿到redis中的用户信息。就可以进行用户登录校验了。
客户端存储token
服务器将token返回给前端。前端将token存储下来。sessionStorage是浏览器的一种存储的方法。
83508f19849c4898a605202722c2d462.png
common.js中
获取到token。再用axjos请求。利用拦截器。每次浏览器发起请求之前。将token作为请求头。头的名字叫做authorization这样以后凡是有axjos发起的请求。都会携带token。将来在服务端就可以获取authorization。也就获取到了token了。从而实现对登录的验证
存储用户信息key不能使用手机号的原因
将来把手机号返回到前端。保存到浏览器,不太安全。会有泄露的风险。因此不能使用手机号。
964e4de619774179ae7fb357599077cd.png
11bc1ab8ad6745cf823dc1a4b9ca2c34.png
a2df04f9ac0a45d393a4fc9d0cd7f467.png
十、基于redis实现短信登录
写代码:已经写好了
十一、解决状态登录的刷新问题
登录拦截器的优化
我们现在的拦截器只是用户访问关于需要登录的页面才会生效。
实现:只要用户一直访问,token有效期就一直被刷新。
再添加一个拦截器。
第一个拦截器拦截一切路径,只做如下五步。
第二个拦截器,查询ThreadLocal的用户
9d7c5b99a526446aa0086f65b7fa375d.png
总结:
e23da2f3b5bc4b74bf08a3bab7efb200.png