token设计:
username+”,”+userId+”,”+IP+”,”+loginTime
redis存储K-V:
key:username+”,”+id
value: ip+”,”+loginTime
登录实现:
- 前端传参username,password;
- 通过username查出user,得到userId和加密密码;
- 初始化boolean flag=false,构造key:username+”,”+id,在redis中查询记录,若成功查到结果(即ip+loginTime),则解析字符串,将ip和loginTime放在一个map中,设置flag=true;
- 密码比对,若比对成功,构建token,然后判断flag,若为true,将token加到map中,并添加提示语,再将map返回,若为false,则直接返回token。
此时前端能够拿到用户上一次的登录信息,根据业务需求做动态处理。
token只需要对前端加密,redis中的信息可以明文存储。
token验证与注销
拿到token解密得到username+id+ip+time,拆分得到key,查询value,进行比对或者删除即可。