關(guān)于JwtToken使用-重點看一下過期時間
JwtToken使用
最近在做一個app,登錄驗證是用的jwt的token驗證,今天來記錄一下.....
下面是具體步驟
1.添加jar包
然后是jwt token的具體實現(xiàn)
三個常量分別是
- 保存在服務端的密鑰
- jwt令牌的有效時間
- 刷新令牌的有效時間
jwt內(nèi)置了許多加密編碼,我這里采用Hs256加密,將自己設定的特有密碼進行base編碼,生成一個key
這一段是生成一個usertoken
jwt token
包含三部分 分別是header,payload(載荷),sign(簽名)header
用來設置自己token的類型和使用的編碼,payload存放用戶的安全信息,因為jwt提供的編碼是可逆的,所以不要存放用戶的關(guān)鍵信息sign
是token的一個簽名,由headr,payload以及key決定,當客戶端發(fā)來一個key的時候,只要校驗簽名是否正確即可
這一段代碼和上一張圖在同一個方法內(nèi),主要用于實現(xiàn)令牌的刷新,本來刷新時間應該存放在redis里,但是我條件有限,只能先存放在數(shù)據(jù)庫中
token的校驗從傳來的token中獲得載荷payload,重新生成一個token,拿到新token的簽名sign,將新的sign和舊sign比較,當兩個sign一致時則通過驗證
這一段代碼和上一段在同一個方法內(nèi),當連個sign不一致時說明客戶端token被篡改,直接返回一個null,在攔截器中做判斷當為null時直接回到登陸界面
當t oken過期 ExpiredJwtException e 會自動捕獲,我們在捕獲到這個異常時,進行令牌的刷新,然后返回這個新的令牌
兩個sign一致就直接返回原先的token。
令牌的刷新將之前存放在數(shù)據(jù)中刷新有效時間取出,與當前時間進行比較,如果小于當前的刷新有效時間則刷新令牌,然后更新數(shù)據(jù)庫,返回新的token字符串,
如果該用戶連已經(jīng)長時間未使用app,導致當前時間已經(jīng)超過了令牌刷新的時間,則刪除數(shù)據(jù)庫中的對應數(shù)據(jù),token返回null;
客戶端的token是放在request的header中發(fā)到后臺的,所以需要從heaer中取出
拿到的token是這樣子的,所以需要對這個字符串按照空格截取,拿到真正有用的token
我們拿到校驗返回過來的字符串,當這個字符串為空時,客戶端返回到登陸界面
當兩個token不相等時,說明校驗傳回來的token是新的,那么我們修改響應頭中token為新的token,然后程序繼續(xù)執(zhí)行
........
第一次使用jwt,對jwt安全性還很不了解......只能先這樣了
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA2019.2.2配置Maven3.6.2打開出現(xiàn)Unable to import Maven project
這篇文章主要介紹了IDEA2019.2.2配置Maven3.6.2打開出現(xiàn)Unable to import Maven project,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12testNG項目通過idea Terminal命令行執(zhí)行的配置過程
這篇文章主要介紹了testNG項目通過idea Terminal命令行執(zhí)行,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-07-07Spring Boot Admin實現(xiàn)服務健康預警功能
這篇文章主要介紹了Spring Boot Admin實現(xiàn)服務健康預警功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05JDK動態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件解析
這篇文章主要為大家詳細介紹了JDK動態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02SpringBoot集成Dubbo啟用gRPC協(xié)議
這篇文章主要介紹了SpringBoot集成Dubbo啟用gRPC協(xié)議,以及與原生 gRPC 在代碼編寫過程中的區(qū)別。感興趣的同學可以參考閱讀2023-04-04jvm垃圾回收GC調(diào)優(yōu)基礎(chǔ)原理分析
談到調(diào)優(yōu),這一定是針對特定場景、特定目的的事情, 對于 GC 調(diào)優(yōu)來說,首先就需要清楚調(diào)優(yōu)的目標是什么?從性能的角度看,通常關(guān)注三個方面,內(nèi)存占用(footprint)、延時(latency)和吞吐量(throughput)2022-01-01