package com.yifu.cloud.plus.v1.yifu.auth.handler; import cn.hutool.http.HttpStatus; import com.fasterxml.jackson.databind.ObjectMapper; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.exception.YifuDeniedException; import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import lombok.Builder; import lombok.extern.log4j.Log4j2; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.authentication.AuthenticationFailureHandler; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * @author fxj * @date 2022年05月30日 15:00 @description */ @Log4j2 @Builder public class YifuAuthenticationFailureHandlerImpl implements AuthenticationFailureHandler { private ObjectMapper objectMapper; @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException, ServletException { log.info("授权失败,禁止访问 {}", request.getRequestURI()); response.setCharacterEncoding(CommonConstants.UTF8); response.setContentType(CommonConstants.CONTENT_TYPE); R<String> result = new R<>(null,new YifuDeniedException(e.getMessage())); response.setStatus(HttpStatus.HTTP_FORBIDDEN); PrintWriter printWriter = response.getWriter(); printWriter.append(objectMapper.writeValueAsString(result)); } }