Redis点评项目--- Chapter one 用户短信登录(redis)
(封面: 中西部情绪)1.发送验证码核心逻辑比较简单如图验证码使用的UUID模拟的验证码用户需要参传入对应的手机号码。当用户点击获取验证码之后我们需要将其存入redis缓存当中后续用作验证码比对以免用户后续更换手机号使用原先的验证码调包登录。2.登录 (重要)用户需要传入对应的手机号验证码进行登录操作先校验了用户的手机号是否合法之后从redis中获取对应手机号的验证码并且验证。这里有个小功能就是没有查询到用户的时候此时会自动注册一个用户提升用户的体验感。生成随机token的后续会作为存储当前登录用户数据的key值如果用户可以正常登录先获取用户的数据如果没有数据就帮用户注册一个新用户如果有数据就先读取用户数据存入redis当中就像前面一样这个key就是UUID生成的随机token登录成功的时候将这个token返回给前端之后前端的每次请求都会携带这个token我们后端只要有这个token就很容易获取redis里面的用户数据设置过期时间30分钟以免redis存储爆满30分钟存储时间指的是用户30分钟未操作如果在这30分钟中操作了就要实时刷新这个时间所以这个逻辑我们放在了拦截器里面去实现。3.双层拦截器 (重要)两个拦截器分别为登录拦截器还有一个是刷新token拦截器刷新token拦截器。上一个点说到了30分钟的事情此时最佳实践是在拦截器中去刷新这个时间因为每次请求打到服务器中去的时候都需要经过拦截器我们就在拦截器中实现这个操作。登录的时候我们返回了一个UUID生成的随机token所以每次请求我们只要获取请求头中的authorization中的数据就可以拿到redis存储用户数据的key值我们直接去获取redis当中的用户数据并且将其存入threadlocal当中去方便后续的使用此时任何操作都需要放行到第二拦截器当中这个拦截器主要是实现刷新token的操作任何网络请求都会经过这个拦截器所以最后一步是刷新redis中的token的时效性登录拦截器。直接获取刷新token拦截器中提前存入的threadlocal的数据判断这个里面是否有值如果有值说明登录了没有则反之。

相关新闻

最新新闻

日新闻

周新闻

月新闻