token验证的退出功能

如果是退出登录的就加入token黑名单,在JWT验证的时候,判断一下token是不是黑名单,如果是,就返回
JWT令牌Token登录验证

  1. /**
  2. * 用户退出登录
  3. *
  4. * @param request
  5. * @return
  6. */
  7. @PostMapping("/logout")
  8. public R<String> logout(HttpServletRequest request) {
  9. //获取token
  10. String token = request.getHeader("Authorization");
  11. DecodedJWT decodedJWT = JwtUtils.checktoken(token);
  12. //获取token的过期时间
  13. Date tokenDate = decodedJWT.getExpiresAt();
  14. //获取token过期时间和当前的时间差
  15. Long secondsFromNow = TjDateUtils.getSecondsFromNow(tokenDate);
  16. //把token加入redis缓存做为黑名单,并设置过去时间
  17. //token作为key,value可以随便写,第三个参数是过期时间,第4个参数是时间单位(秒)
  18. redisTemplate.opsForValue().set(token, "1", secondsFromNow, TimeUnit.SECONDS);
  19. return R.success("退出登录成功!");
  20. }

session验证的退出功能

  1. /**
  2. * 用户退出登录
  3. * @param request
  4. * @return
  5. */
  6. @PostMapping("/logout")
  7. public R<String> logout(HttpServletRequest request){
  8. //清理Session中保存的当前登录员工的id
  9. request.getSession().removeAttribute("users");
  10. return R.success("退出成功!");
  11. }