首先蝗敢,介紹下jwt(json web token)。
jwt包括3個(gè)部分:
Header (頭部)秉氧、Payload (負(fù)載)刽漂、Signature (簽名)演训,其實(shí)token就可以理解為一個(gè)身份驗(yàn)證的令牌、票據(jù)贝咙。
1??header ='{"alg":"HS256","typ":"JWT"}' ?其中 alg表示該令牌的加密方式样悟,type不用管。
2??Payload負(fù)載部分 就是具體的認(rèn)證信息颈畸,通過修改這部分的內(nèi)容來控制認(rèn)證信息如用戶權(quán)限等乌奇。除了一些保留字段exp(過期時(shí)間)、aud眯娱、iss等外,使用方法跟普通Json一樣爬凑。
3??Signature 就是密鑰徙缴。
token =encodeBase64(header) +'.'+ encodeBase64(payload) +'.'+encodeBase64(signature)
令牌尾部拼接上base64url編碼的簽名,就是token了嘁信。
其次于样,介紹下redis。
redis是一個(gè)高性能的key-value數(shù)據(jù)庫潘靖,性能極高穿剖,讀取很快。
特點(diǎn)1?? Redis支持?jǐn)?shù)據(jù)的持久化卦溢,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中糊余,重啟的時(shí)候可以再次加載進(jìn)行使用秀又。
特點(diǎn)2?? Redis不僅僅支持簡單的key-value類型的數(shù)據(jù),同時(shí)還提供list贬芥,set吐辙,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)蘸劈。
特點(diǎn)3?? Redis支持?jǐn)?shù)據(jù)的備份昏苏,即master-slave模式的數(shù)據(jù)備份。
本地威沫,可以安裝一個(gè)redis的庫玩玩贤惯。去官網(wǎng)直接對照你的系統(tǒng)下載安裝包,我下的是dmg的棒掠。直接安裝完成好后救巷。默認(rèn)路徑是:/usr/local/bin(win的同學(xué)不知道,可以自己查下)句柠。
必要的幾個(gè)命令:
#檢測后臺進(jìn)程是否存在 ? ? ? ? ?ps -ef |grep redis
#檢測6379端口是否在監(jiān)聽 ? ? netstat -lntp | grep 6379
#進(jìn)入redis數(shù)據(jù)庫的命令行 ? ? ./redis-cli?
查詢所有的key值 ? ? ? ? ? ? ? ? ? ? 127.0.0.1:6379> keys * (empty list or set)?
進(jìn)入正文浦译,基于spring的token+redis身份驗(yàn)證。
1??該模式下的身份驗(yàn)證過程:
=>用戶通過登錄請求提交用戶名和密碼溯职,服務(wù)端驗(yàn)證通過后生成一個(gè)Token與該用戶進(jìn)行關(guān)聯(lián)精盅,并將Token返回給客戶端。
=>客戶端在接下來的請求中都會(huì)攜帶Token谜酒,服務(wù)端通過解析Token檢查登錄狀態(tài)叹俏。
=>當(dāng)用戶退出登錄、其他終端登錄同一賬號(被頂號)僻族、長時(shí)間未進(jìn)行操作時(shí)Token會(huì)失效粘驰,這時(shí)用戶需要重新登錄。
2??實(shí)現(xiàn)示例:
1.添加必要的jar包述么,java-jwt蝌数、jedis、jjwt度秘、spring-data-redis
2.添加redis的數(shù)據(jù)庫配置:
注:有集群需求的顶伞,可以配置redis_host2、redis_host3剑梳、redis_host4等等唆貌。
3.sring中applicationContext.xml的配置:
注:由于剛開始寫簡書,不是很會(huì)格式話垢乙,貼代碼很亂锨咙,需要源碼的私我,就行了追逮。
本人菜鳥酪刀,不喜勿噴粹舵。
??????