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,進行比對或者刪除即可。