JWT: 生成并發(fā)給客戶端之后,后臺(tái)是不用存儲(chǔ),客戶端訪問時(shí)會(huì)驗(yàn)證其簽名、過期時(shí)間等再取出里面的信息(如username),再使用該信息直接查詢用戶信息完成登錄驗(yàn)證。jwt自帶簽名、過期等校驗(yàn),后臺(tái)不用存儲(chǔ),缺陷是一旦下發(fā),服務(wù)后臺(tái)無法拒絕攜帶該jwt的請(qǐng)求(如踢除用戶);
Token+Redis:是自己生成個(gè)32位的key,value為用戶信息,訪問時(shí)判斷redis里是否有該token,如果有,則加載該用戶信息完成登錄。服務(wù)需要存儲(chǔ)下發(fā)的每個(gè)token及對(duì)應(yīng)的value,維持其過期時(shí)間,好處是隨時(shí)可以刪除某個(gè)token,阻斷該token繼續(xù)使用;
去中心化的JWT優(yōu)點(diǎn):去中心化,便于分布式系統(tǒng)使用;基本信息可以直接放在token中。username,nickname,role;功能權(quán)限較少的話,可以直接放在token中。用bit位表示用戶所具有的功能權(quán)限;
缺點(diǎn):服務(wù)端不能主動(dòng)讓token失效;
中心化的Redis+Token優(yōu)點(diǎn):服務(wù)端可以主動(dòng)讓token失效;
缺點(diǎn):依賴內(nèi)存或redis存儲(chǔ);分布式系統(tǒng)的話,需要redis調(diào)用增加了系統(tǒng)復(fù)雜性;
使用redis實(shí)現(xiàn)分布式session:https://blog.csdn.net/qwhsza/article/details/147395768
為什么JWT 比 session 更適合于分布式系統(tǒng):http://www.rzrgm.cn/gongchengship/p/18284483
浙公網(wǎng)安備 33010602011771號(hào)