重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
小编给大家分享一下springboot+jwt实现刷新token的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
目前创新互联已为上千家的企业提供了网站建设、域名、雅安服务器托管、绵阳服务器托管、企业网站设计、通州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。
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:
这里是登陆成功之后的显示:
这里是token过期后,refToken刷新的token:
这里是设定的refToken过期后在访问的显示:
以上是“springboot+jwt实现刷新token的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联网站建设公司行业资讯频道!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。