国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

基于springboot+jwt實現刷新token過程解析

瀏覽:3日期:2023-05-26 14:46:50

前一段時間講過了springboot+jwt的整合,但是因為一些原因(個人比較懶)并沒有更新關于token的刷新問題,今天跟別人閑聊,聊到了關于業務中token的刷新方式,所以在這里我把我知道的一些點記錄一下,也希望能幫到一些有需要的朋友,同時也希望給我一些建議,話不多說,上代碼!

1:這種方式為在線刷新,比方說設定的token有效期為30min,那么每次訪問資源時,都會在攔截器中去判斷一下token是否過期,如果沒有過期就刷新token的時間為30min,反之則會重新登錄,需要注意的是這種方式我是在登錄以后就將token存在了redis

//登錄方法中將token存在redis String token = JwtUtil.sign(userName,user.getId()); redisUtil.set(UserConstants.PREFIX_USER_TOKEN + token, token,UserConstants.TOKEN_EXPIRE_TIME); Map map=new HashMap(); map.put('token', token); return Result.success(map); //在攔截器中獲取token,并判斷token的有效期 String token = req.getHeader(UserConstants.ACCESS_TOKEN); if (Strings.isNullOrEmpty(token)) { return false; } Object reqToken=redisUtil.get(UserConstants.PREFIX_USER_TOKEN+token); if (ObjectUtils.isEmpty(reqToken)) { return false; } if(redisUtil.getExpire(UserConstants.PREFIX_USER_TOKEN+token) <1){ return false; } redisUtil.set(UserConstants.PREFIX_USER_TOKEN + token, token,UserConstants.TOKEN_EXPIRE_TIME); return true;

2.這種方式為免密登錄,也就是說,登錄一次后就不用再通過賬號密碼登錄,思路就是在生成token時候,在生成一個refToken來刷新,比如說我的token設置的有效期為5分鐘,refToken設置的為一周,那么在請求時候則判斷token是否過期,如果已經過期 就判斷refToken的時間有沒有過期,沒有過期則生成一個新的token給前端,同時重置這個refToken(看你自己),如果refToken已經過期則重新登錄,需要注意的是這次生成的token并不存在redis中,而是將refToken存在redis。

// 生成token String token = JwtUtil.sign(userName,user.getId()); //刷新token,免密登陸 String refToken=UUID.randomUUID().toString().replaceAll('-',''); redisUtil.set(UserConstants.PREFIX_USER_TOKEN + token, refToken,UserConstants.TOKEN_EXPIRE_TIME); Map map=new HashMap(); map.put('token', token); map.put('refToken', refToken); return Result.success(map); //這里在攔截其中校驗token,如果校驗失敗,則判斷redis的refToken是否過期 if (!JwtUtil.verify(token)) { if(redisUtil.getExpire(UserConstants.PREFIX_USER_TOKEN+token)>=1){HttpServletResponse httpServletResponse = (HttpServletResponse) response;String newRefToken=UUID.randomUUID().toString().replaceAll('-','');Integer userId=Integer.parseInt(JwtUtil.getUserId(token));User user=userService.selectOne(userId);String newToken=JwtUtil.sign(user.getUserName(),user.getId());httpServletResponse.setHeader('newToken',newToken);httpServletResponse.setHeader('newRefToken',newRefToken);return true; }else{return false; } }

3.貼一下我在postMan中的測試結果:

這里是登錄后返回的token和refToken:

基于springboot+jwt實現刷新token過程解析

這里是登陸成功之后的顯示:

基于springboot+jwt實現刷新token過程解析

這里是token過期后,refToken刷新的token:

基于springboot+jwt實現刷新token過程解析

這里是設定的refToken過期后在訪問的顯示:

基于springboot+jwt實現刷新token過程解析

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 日本一级特大毛片 | 国产成人精品视频 | 久久久久久青草大香综合精品 | 日韩三级在线观看视频 | 免费区欧美一级毛片 | 亚洲精品一区二区久久这里 | 成 人 在 线 免费 8888 www | 国内精品九一在线播放 | 日本一级全黄大片 | 亚洲精品国产一区二区三区在 | 精品国产a | 国产成人影院在线观看 | 午夜宅男在线永远免费观看网 | 国产v综合v亚洲欧美大另类 | 国产精品一区二区久久精品涩爱 | 欧美综合在线视频 | 18在线网站 | 久久99国产综合精品 | 精品欧美一区二区三区免费观看 | 国产呦精品系列在线 | 亚洲天堂免费观看 | 久久精品免费全国观看国产 | 欧美色大成网站www永久男同 | 26uuu天天夜夜综合 | 成人免费毛片网站 | 鸥美性生交xxxxx久久久 | 久草手机在线 | 国产成人精品一区二区秒拍 | 日韩欧美亚洲 | 99久久免费精品 | 仑乱高清在线一级播放 | 国产成人精品免费午夜 | 国产精品一区二区在线观看 | 国产色在线播放 | 欧美日本道免费一区二区三区 | 欧美一级成人影院免费的 | 在线观看国产情趣免费视频 | 成人亚洲欧美日韩中文字幕 | 韩国黄色一级毛片 | 免费中国一级啪啪片 | 亚洲视频一区在线 |