TokenController.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package com.ruoyi.auth.controller;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.http.HttpHeaders;
  4. import org.springframework.security.oauth2.common.OAuth2AccessToken;
  5. import org.springframework.security.oauth2.common.OAuth2RefreshToken;
  6. import org.springframework.security.oauth2.provider.token.TokenStore;
  7. import org.springframework.web.bind.annotation.DeleteMapping;
  8. import org.springframework.web.bind.annotation.RequestHeader;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RestController;
  11. import com.ruoyi.common.core.domain.R;
  12. import com.ruoyi.common.core.utils.StringUtils;
  13. /**
  14. * token 控制
  15. *
  16. * @author ruoyi
  17. */
  18. @RestController
  19. @RequestMapping("/token")
  20. public class TokenController
  21. {
  22. @Autowired
  23. private TokenStore tokenStore;
  24. @DeleteMapping("/logout")
  25. public R<?> logout(@RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authHeader)
  26. {
  27. if (StringUtils.isEmpty(authHeader))
  28. {
  29. return R.ok();
  30. }
  31. String tokenValue = authHeader.replace(OAuth2AccessToken.BEARER_TYPE, StringUtils.EMPTY).trim();
  32. OAuth2AccessToken accessToken = tokenStore.readAccessToken(tokenValue);
  33. if (accessToken == null || StringUtils.isEmpty(accessToken.getValue()))
  34. {
  35. return R.ok();
  36. }
  37. // 清空 access token
  38. tokenStore.removeAccessToken(accessToken);
  39. // 清空 refresh token
  40. OAuth2RefreshToken refreshToken = accessToken.getRefreshToken();
  41. tokenStore.removeRefreshToken(refreshToken);
  42. return R.ok();
  43. }
  44. }