我们为了避免集群服务端所产生的不同session的登录认证问题,所以会使用浏览器自带的Cookie存储登录令牌
初始登录业务逻辑:
输入手机号,发送验证码,存入Redis,设置有效时间(手机号验证码分别为键值)
输入表单完成之后点击---登录,发AJAX请求到后台
通过REDIS验证验证码
查询Mysql是否存在member记录,不存在就新增
在Redis中setex一个以令牌为键,member为值的一条记录
令牌= 手机号+(当前时间(毫秒)+超时时间)
把令牌加入cookie响应回去,cookie名称随意
校验是否登录?
每次需要校验时候发送AJAX请求,后台遍历所有cookie,找到带有该名字的cookie
并通过Redis进行时间过期校验
后端代码
@RestController
@RequestMapping("/login")
public class LoginController {
@Reference
MobileLoginService mobileLoginService;
@Autowired
JedisPool jedisPool;
/**
* 发送短信的逻辑,点击发送按钮即可发送短信
*/
@PostMapping("/send4Login")
public Result sendLoginMessage(String telephone){
Integer random=RandomNumberUtil.getNumber();
boolean flag = new SendMassageUtil().sendSms(telephone, random);
if (flag){
/**
* 如果发送成功,就把信息存到redis里面,以后使用。
*/
String telephone4LoginInRedis=telephone+"_Number4Login";
Str