色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

基于springboot+jwt實(shí)現(xiàn)刷新token過程解析

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

前一段時(shí)間講過了springboot+jwt的整合,但是因?yàn)橐恍┰颍▊€(gè)人比較懶)并沒有更新關(guān)于token的刷新問題,今天跟別人閑聊,聊到了關(guān)于業(yè)務(wù)中token的刷新方式,所以在這里我把我知道的一些點(diǎn)記錄一下,也希望能幫到一些有需要的朋友,同時(shí)也希望給我一些建議,話不多說(shuō),上代碼!

1:這種方式為在線刷新,比方說(shuō)設(shè)定的token有效期為30min,那么每次訪問資源時(shí),都會(huì)在攔截器中去判斷一下token是否過期,如果沒有過期就刷新token的時(shí)間為30min,反之則會(huì)重新登錄,需要注意的是這種方式我是在登錄以后就將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.這種方式為免密登錄,也就是說(shuō),登錄一次后就不用再通過賬號(hào)密碼登錄,思路就是在生成token時(shí)候,在生成一個(gè)refToken來(lái)刷新,比如說(shuō)我的token設(shè)置的有效期為5分鐘,refToken設(shè)置的為一周,那么在請(qǐng)求時(shí)候則判斷token是否過期,如果已經(jīng)過期 就判斷refToken的時(shí)間有沒有過期,沒有過期則生成一個(gè)新的token給前端,同時(shí)重置這個(gè)refToken(看你自己),如果refToken已經(jīng)過期則重新登錄,需要注意的是這次生成的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); //這里在攔截其中校驗(yàn)token,如果校驗(yàn)失敗,則判斷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中的測(cè)試結(jié)果:

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

基于springboot+jwt實(shí)現(xiàn)刷新token過程解析

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

基于springboot+jwt實(shí)現(xiàn)刷新token過程解析

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

基于springboot+jwt實(shí)現(xiàn)刷新token過程解析

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

基于springboot+jwt實(shí)現(xiàn)刷新token過程解析

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 亚洲日本在线观看 | 日韩精品亚洲一级在线观看 | 热99re久久精品香蕉 | 久久黄色精品视频 | 欧美在线成人午夜网站 | 在线视频一二三区 | 美女很黄很黄是免费的·无遮挡网站 | 美国一级毛片免费看 | 青青热久久国产久精品 | 一级片视频免费看 | 亚洲视频偷拍自拍 | 亚洲国产大片 | 国产亚洲精品一区二区三区 | 欧美综合自拍亚洲综合百度 | 欧美极品第1页专区 | 综合91| 亚洲精品高清在线观看 | 午夜丝袜美腿福利视频在线看 | 免费成人 | 美女图片1314mm爽爽爽 | 久久99久久成人免费播放 | 手机在线看片国产日韩生活片 | 国产三级精品久久三级国专区 | 国产高清av在线播放 | 手机福利片 | 欧美在线高清 | 日韩美女网站在线看 | 日韩一级精品久久久久 | 国产精品久久在线观看 | 成人欧美视频在线观看播放 | 在线观看一区二区三区视频 | 国产欧美17694免费观看视频 | 日韩免费观看一级毛片看看 | 三级视频网站在线观看播放 | 欧美aaaa在线观看视频免费 | 久草视频免费看 | 国产后式a一视频 | aaa毛片手机在线现看 | 波多野结衣视频在线观看 | 久久久久久久99久久久毒国产 | 国产精品久久久精品三级 |