日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JWTToken超时刷新策略

發布時間:2025/3/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JWTToken超时刷新策略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于登錄的用戶簽發其對應的jwt,我們在jwt設置他的固定有效期時間,在有效期內用戶攜帶jwt訪問沒問題,當過有效期后jwt失效,用戶需要重新登錄獲取新的jwt。這個體驗不太好,好的體驗應該是:活躍的用戶應該在無感知的情況下在jwt失效后獲取到新的jwt,攜帶這個新的jwt進行訪問,而長時間不活躍的用戶應該在jwt失效后需要進行重新的登錄認證。

這里就涉及到了token的超時刷新問題,解決方案看圖:

?

?

/*** JWTToken刷新生命周期* 1、登錄成功后將用戶的JWT生成的Token作為k、v存儲到cache緩存里面(這時候k、v值一樣)* 2、當該用戶在次請求時,通過JWTFilter層層校驗之后會進入到doGetAuthenticationInfo進行身份驗證* 3、當該用戶這次請求JWTToken值還在生命周期內,則會通過重新PUT的方式k、v都為Token值,緩存中的token值生命周期時間重新計算(這時候k、v值一樣)* 4、當該用戶這次請求jwt生成的token值已經超時,但該token對應cache中的k還是存在,則表示該用戶一直在操作只是JWT的token失效了,程序會給token對應的k映射的v值重新生成JWTToken并覆蓋v值,該緩存生命周期重新計算* 5、當該用戶這次請求jwt在生成的token值已經超時,并在cache中不存在對應的k,則表示該用戶賬戶空閑超時,返回用戶信息已失效,請重新登錄。* 6、每次當返回為true情況下,都會給Response的Header中設置Authorization,該Authorization映射的v為cache對應的v值。* 7、注:當前端接收到Response的Header中的Authorization值會存儲起來,作為以后請求token使用* @param userName* @param passWord* @return*/public boolean jwtTokenRefresh(String userName,String passWord){HttpServletRequest httpServletRequest = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();HttpServletResponse response = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();String token = httpServletRequest.getHeader(Constants.TOKEN);String cacheTokenKey = String.valueOf(EhcacheUtils.getInstance().get("matedataManagement", token));System.out.println(cacheTokenKey == null);if(!StringUtils.isEmpty(cacheTokenKey) && !cacheTokenKey.equals("null")){if (!JWTUtil.verify(token, userName, passWord)) {String newAuthorization=JWTUtil.sign(userName, passWord);EhcacheUtils.getInstance().put("matedataManagement", cacheTokenKey, newAuthorization, JWTUtil.getExpireTime()/1000);}else {EhcacheUtils.getInstance().put("matedataManagement", cacheTokenKey, cacheTokenKey,JWTUtil.getExpireTime()/1000);}response.setHeader("Authorization", String.valueOf(EhcacheUtils.getInstance().get("matedataManagement", cacheTokenKey)));return true;} return false;}

?

總結

以上是生活随笔為你收集整理的JWTToken超时刷新策略的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。