| package com.zy.asrs.openapi.config;  | 
|   | 
| import com.zy.asrs.common.sys.entity.OperateLog;  | 
| import com.zy.asrs.common.sys.service.OperateLogService;  | 
| import com.zy.asrs.framework.annotations.AppAuth;  | 
| import org.springframework.beans.factory.annotation.Autowired;  | 
| import org.springframework.lang.Nullable;  | 
| import org.springframework.stereotype.Component;  | 
| import org.springframework.web.method.HandlerMethod;  | 
| import org.springframework.web.servlet.ModelAndView;  | 
| import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;  | 
|   | 
| import javax.servlet.http.HttpServletRequest;  | 
| import javax.servlet.http.HttpServletResponse;  | 
| import java.lang.reflect.Method;  | 
|   | 
| @Component  | 
| public class AdminInterceptor extends HandlerInterceptorAdapter {  | 
|   | 
|     @Autowired  | 
|     private OperateLogService operateLogService;  | 
|   | 
|     @Override  | 
|     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  | 
|         cors(response);  | 
|         if (handler instanceof org.springframework.web.servlet.resource.ResourceHttpRequestHandler) {  | 
|             return true;  | 
|         }  | 
|         // 跨域设置  | 
|         // response.setHeader("Access-Control-Allow-Origin", "*");  | 
|         HandlerMethod handlerMethod = (HandlerMethod) handler;  | 
|         Method method = handlerMethod.getMethod();  | 
|         if (method.isAnnotationPresent(AppAuth.class)){  | 
|             AppAuth annotation = method.getAnnotation(AppAuth.class);  | 
|             if (annotation.value().equals(AppAuth.Auth.CHECK)){  | 
|                 request.setAttribute("appAuth", annotation.memo());  | 
|             }  | 
|         }  | 
|         return true;  | 
|     }  | 
|   | 
|     @Override  | 
|     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) {  | 
|         Object obj = request.getAttribute("operateLog");  | 
|         if (obj instanceof OperateLog) {  | 
|             OperateLog operate = (OperateLog) obj;  | 
|             operate.setResponse(String.valueOf(response.getStatus()));  | 
|             operateLogService.save(operate);  | 
|         }  | 
|     }  | 
|   | 
|     @Override  | 
|     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {  | 
| //        Object r = request.getAttribute("cool-response");  | 
|     }  | 
|   | 
|     /**  | 
|      * 跨域  | 
|      */  | 
|     public static void cors(HttpServletResponse response){  | 
|         // 跨域设置  | 
|         response.setHeader("Access-Control-Allow-Origin", "*");  | 
|         response.setHeader("Access-Control-Allow-Credentials", "true");  | 
|         response.setHeader("Access-Control-Allow-Methods", "*");  | 
|         response.setHeader("Access-Control-Allow-Headers", "Content-Type,Access-Token");  | 
|         response.setHeader("Access-Control-Expose-Headers", "*");  | 
|   | 
|     }  | 
|   | 
| }  |