JwtAccessDeniedHandler.java 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. package space.anyi.serve.handler.security;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import jakarta.servlet.ServletException;
  4. import jakarta.servlet.http.HttpServletRequest;
  5. import jakarta.servlet.http.HttpServletResponse;
  6. import org.springframework.http.HttpStatus;
  7. import org.springframework.http.MediaType;
  8. import org.springframework.security.access.AccessDeniedException;
  9. import org.springframework.security.web.access.AccessDeniedHandler;
  10. import org.springframework.stereotype.Component;
  11. import space.anyi.serve.entity.Response;
  12. import java.io.IOException;
  13. @Component
  14. public class JwtAccessDeniedHandler implements AccessDeniedHandler {
  15. private final ObjectMapper objectMapper;
  16. public JwtAccessDeniedHandler(ObjectMapper objectMapper) {
  17. this.objectMapper = objectMapper;
  18. }
  19. @Override
  20. public void handle(HttpServletRequest request,
  21. HttpServletResponse response,
  22. AccessDeniedException accessDeniedException) throws IOException, ServletException {
  23. response.setStatus(HttpStatus.FORBIDDEN.value());
  24. response.setContentType(MediaType.APPLICATION_JSON_VALUE);
  25. response.getWriter().write(objectMapper.writeValueAsString(Response.error("无权限访问")));
  26. }
  27. }