| package com.mzl.flower.config; | 
|   | 
| import com.fasterxml.jackson.databind.ObjectMapper; | 
| import com.mzl.flower.base.R; | 
| import com.mzl.flower.base.ReturnDataDTO; | 
| import lombok.AllArgsConstructor; | 
| import lombok.SneakyThrows; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.http.HttpStatus; | 
| import org.springframework.security.access.AccessDeniedException; | 
| import org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler; | 
| import org.springframework.stereotype.Component; | 
|   | 
| import javax.servlet.http.HttpServletRequest; | 
| import javax.servlet.http.HttpServletResponse; | 
| import java.io.PrintWriter; | 
|   | 
|   | 
| @Slf4j | 
| @Component | 
| @AllArgsConstructor | 
| public class SecurityAccessDeniedHandler extends OAuth2AccessDeniedHandler { | 
|   | 
|     private final ObjectMapper objectMapper; | 
|   | 
|     @Override | 
|     @SneakyThrows | 
|     public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException authException) { | 
|         response.setCharacterEncoding("UTF-8"); | 
|         response.setContentType("application/json; charset=utf-8"); | 
|         response.setStatus(HttpStatus.FORBIDDEN.value()); | 
|         PrintWriter printWriter = response.getWriter(); | 
|         String errorMessage = authException.getMessage(); | 
|         printWriter.append(objectMapper.writeValueAsString(new ReturnDataDTO<>(R.AccessDeniedException.getCode(), null, errorMessage))); | 
|     } | 
| } |