springboot+jwt实现刷新token的示例分析(jwt,springboot,token,编程语言)

时间:2024-05-05 02:24:26 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。

1:这种方式为在线刷新,比方说设定的token有效期为30min,那么每次访问资源时,都会在拦截器中去判断一下token是否过期,如果没有过期就刷新token的时间为30min,反之则会重新登录,需要注意的是这种方式我是在登录以后就将token存在了redis

//登录方法中将token存在redisStringtoken=JwtUtil.sign(userName,user.getId());redisUtil.set(UserConstants.PREFIX_USER_TOKEN+token,token,UserConstants.TOKEN_EXPIRE_TIME);Mapmap=newHashMap();map.put("token",token);returnResult.success(map);//在拦截器中获取token,并判断token的有效期Stringtoken=req.getHeader(UserConstants.ACCESS_TOKEN);if(Strings.isNullOrEmpty(token)){returnfalse;}ObjectreqToken=redisUtil.get(UserConstants.PREFIX_USER_TOKEN+token);if(ObjectUtils.isEmpty(reqToken)){returnfalse;}if(redisUtil.getExpire(UserConstants.PREFIX_USER_TOKEN+token)<1){returnfalse;}redisUtil.set(UserConstants.PREFIX_USER_TOKEN+token,token,UserConstants.TOKEN_EXPIRE_TIME);returntrue;

2.这种方式为免密登录,也就是说,登录一次后就不用再通过账号密码登录,思路就是在生成token时候,在生成一个refToken来刷新,比如说我的token设置的有效期为5分钟,refToken设置的为一周,那么在请求时候则判断token是否过期,如果已经过期 就判断refToken的时间有没有过期,没有过期则生成一个新的token给前端,同时重置这个refToken(看你自己),如果refToken已经过期则重新登录,需要注意的是这次生成的token并不存在redis中,而是将refToken存在redis。

//生成tokenStringtoken=JwtUtil.sign(userName,user.getId());//刷新token,免密登陆StringrefToken=UUID.randomUUID().toString().replaceAll("-","");redisUtil.set(UserConstants.PREFIX_USER_TOKEN+token,refToken,UserConstants.TOKEN_EXPIRE_TIME);Mapmap=newHashMap();map.put("token",token);map.put("refToken",refToken);returnResult.success(map);//这里在拦截其中校验token,如果校验失败,则判断redis的refToken是否过期if(!JwtUtil.verify(token)){if(redisUtil.getExpire(UserConstants.PREFIX_USER_TOKEN+token)>=1){HttpServletResponsehttpServletResponse=(HttpServletResponse)response;StringnewRefToken=UUID.randomUUID().toString().replaceAll("-","");IntegeruserId=Integer.parseInt(JwtUtil.getUserId(token));Useruser=userService.selectOne(userId);StringnewToken=JwtUtil.sign(user.getUserName(),user.getId());httpServletResponse.setHeader("newToken",newToken);httpServletResponse.setHeader("newRefToken",newRefToken);returntrue;}else{returnfalse;}}

3.贴一下我在postMan中的测试结果:

这里是登录后返回的token和refToken:

springboot+jwt实现刷新token的示例分析

这里是登陆成功之后的显示:

springboot+jwt实现刷新token的示例分析

这里是token过期后,refToken刷新的token:

springboot+jwt实现刷新token的示例分析

这里是设定的refToken过期后在访问的显示:

springboot+jwt实现刷新token的示例分析

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:springboot+jwt实现刷新token的示例分析的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:JMeter如何实现Java请求步骤下一篇:

8 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18