package com.video.script.admin.config; import com.video.script.admin.common.LoginUser; import com.video.script.admin.common.UserContext; import com.video.script.admin.service.TokenService; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; @Component public class AuthInterceptor implements HandlerInterceptor { private final TokenService tokenService; public AuthInterceptor(TokenService tokenService) { this.tokenService = tokenService; } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String uri = request.getRequestURI(); if (uri.startsWith("/api/auth/login")) { return true; } String token = request.getHeader("Authorization"); if (token == null || token.trim().isEmpty()) { response.setStatus(401); response.setContentType("application/json;charset=UTF-8"); response.getWriter().write("{\"code\":401,\"message\":\"Unauthorized\",\"data\":null}"); return false; } LoginUser loginUser = tokenService.parse(token.replace("Bearer ", "")); if (loginUser == null) { response.setStatus(401); response.setContentType("application/json;charset=UTF-8"); response.getWriter().write("{\"code\":401,\"message\":\"Token invalid\",\"data\":null}"); return false; } UserContext.set(loginUser); return true; } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { UserContext.clear(); } }