AuthInterceptor.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package com.video.script.admin.config;
  2. import com.video.script.admin.common.LoginUser;
  3. import com.video.script.admin.common.UserContext;
  4. import com.video.script.admin.service.TokenService;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import org.springframework.stereotype.Component;
  8. import org.springframework.web.servlet.HandlerInterceptor;
  9. @Component
  10. public class AuthInterceptor implements HandlerInterceptor {
  11. private final TokenService tokenService;
  12. public AuthInterceptor(TokenService tokenService) {
  13. this.tokenService = tokenService;
  14. }
  15. @Override
  16. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  17. String uri = request.getRequestURI();
  18. if (uri.startsWith("/api/auth/login")) {
  19. return true;
  20. }
  21. String token = request.getHeader("Authorization");
  22. if (token == null || token.trim().isEmpty()) {
  23. response.setStatus(401);
  24. response.setContentType("application/json;charset=UTF-8");
  25. response.getWriter().write("{\"code\":401,\"message\":\"Unauthorized\",\"data\":null}");
  26. return false;
  27. }
  28. LoginUser loginUser = tokenService.parse(token.replace("Bearer ", ""));
  29. if (loginUser == null) {
  30. response.setStatus(401);
  31. response.setContentType("application/json;charset=UTF-8");
  32. response.getWriter().write("{\"code\":401,\"message\":\"Token invalid\",\"data\":null}");
  33. return false;
  34. }
  35. UserContext.set(loginUser);
  36. return true;
  37. }
  38. @Override
  39. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
  40. UserContext.clear();
  41. }
  42. }