長短token解決方案
1:解釋長短token
Token的返回:
用戶登陸後,後臺會返回給用戶兩個token,1是長token,2是短token
有效期:
長token有效期爲一個月,短token有效期爲1小時
訪問與再次獲取:
APP每次訪問數據攜帶這短token,如果後臺中存在短token則證明短token有效可以進行數據訪問。
如果沒有查到該短token,則APP使用長token去請求短token,如果長token存在,則請求成功後得到的新短token用於數據訪問。
如果長token不存在,則用戶需要重新登錄獲取長短token。
後臺設計:
用戶登錄->驗證數據庫,如果登陸成功則返回給APP一個長token,一個短token
我們在生成長短token的時候將在redis數據庫中新增兩條記錄:
1:key短token,value隨機字符串,有效期1小時
2:key是長token,value是短token,有效期30天
環境模擬:
Redis1:(LT:ELEPH)
Redis2:(ST:LT)
如果Redis1超過1小時,短token失效則Redis1消失
這時我們再去查詢Redis2,拿着ST看看能不能取到值,如果能取到值則再生成一個Redis1,之後將ST的Value重置成新生成的短Token,之後Redis2的生存時間不改變
如果Reids2也失效的話,拿着ST就取不到數據,這時就應該重新登錄,重新獲取長短token
短token生成:
Key是短token本體,可以爲UUID。。
Value就是一個固定值吧。Base64 (Base64(FamilyId))
UUID:Eleph 時效性1小時
長token生成:
Key是長token本體,用Base64 (Base64((FamilyId+時間)))
Value是短token的UUID 時效性30天