方案一羹膳、采用https加密方案醒颖。
1、賬號(hào)密碼登錄,返回token(其實(shí)token類似于sessionid,在session里面存放了userid信息),token有過期時(shí)間等信息。app端將token保存在本地隘谣;過期后要求重新登錄,獲取新的token码泛。
2、請(qǐng)求參數(shù)的時(shí)候,將token傳到后臺(tái),后臺(tái)根據(jù)token獲取userid獲取用戶數(shù)據(jù)朱庆。
根據(jù)token的時(shí)間期限傲诵,自動(dòng)清理。
但是token一直不變的話,經(jīng)常傳輸?shù)倪^程中容易被截取。
解決方案如下:
方案二、賬號(hào)密碼登錄https加密(推薦方案)
1、登錄:返回一個(gè)固定的refreshtoken和accesstoken
2、Accesstoken用來平時(shí)請(qǐng)求數(shù)據(jù)勤晚,他的時(shí)間期限是固定的(可以協(xié)定設(shè)置為一天或一周根據(jù)實(shí)際情況考慮)挺邀。時(shí)間期限到了之后沦补,就用refretoken請(qǐng)求新的accesstoken产舞。
注:這樣的話傳輸過程中會(huì)定期的改變accesstoken被人獲取的傷害會(huì)減凶纪恰(加上有https加密基本獲取不到Accesstoken)
若需求要求一周未使用app需重新登陸的話吠勘∷薪可以如下做法宵凌。
進(jìn)入app時(shí)可以
先去本地獲取上次登陸時(shí)間瞎惫,有的話獲取和當(dāng)前時(shí)間比較。(注意:在時(shí)間范圍內(nèi)的話烂翰,每次進(jìn)入時(shí)更新上次登陸時(shí)間為當(dāng)前時(shí)間佳恬,或則會(huì)出現(xiàn)定期登陸現(xiàn)象)
超過需求要求的時(shí)間曙砂,就清空refretoken和accesstoken际度。要求重新登陸。
重新登陸后,服務(wù)端將refretoken和accesstoken全部更新。
服務(wù)端實(shí)現(xiàn)操作:
1捺氢、第一次登陸成功挤茄。
服務(wù)器產(chǎn)生一個(gè)refretoken和accesstoken 的map在緩存中歇终,類似于session。
accesstoken的值為refretoken
refretoken的值為userid
用戶用accesstoken登陸時(shí)可以通過獲取refreshtoken來得到userid保證數(shù)據(jù)安全
2奕短、每個(gè)accesstoken都有一個(gè)時(shí)間期限翎碑,到了時(shí)間期限服務(wù)器就需要清掉該緩存。
用戶用refreshtoken來昌盛一個(gè)新的accesstoken一次往復(fù)
3项乒、用戶登錄時(shí)频鉴,需要清理這個(gè)用戶已經(jīng)存在的accesstoken和refretoken。避免refretoken一直不變的不安全(如何刷新的話默怨,可以在user表里面發(fā)個(gè)refretoken,登錄的時(shí)候再到該token清掉產(chǎn)生新的重新保存)
以上只是個(gè)人想象的方案袭景,有更好的方案改淑,希望指教。