| | |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.ObjectUtils; |
| | | import org.springframework.web.filter.OncePerRequestFilter; |
| | | |
| | | import javax.servlet.*; |
| | |
| | | * @author lin |
| | | */ |
| | | @WebFilter(filterName = "ApiAccessFilter", urlPatterns = "/api/*", asyncSupported=true) |
| | | @Component |
| | | public class ApiAccessFilter extends OncePerRequestFilter { |
| | | |
| | | private final static Logger logger = LoggerFactory.getLogger(ApiAccessFilter.class); |
| | |
| | | long start = System.currentTimeMillis(); // 请求进入时间 |
| | | String uriName = ApiSaveConstant.getVal(servletRequest.getRequestURI()); |
| | | |
| | | String origin = servletRequest.getHeader("Origin"); |
| | | servletResponse.setContentType("application/json;charset=UTF-8"); |
| | | servletResponse.setHeader("Access-Control-Allow-Origin", origin != null ? origin : "*"); |
| | | servletResponse.setHeader("Access-Control-Allow-Credentials", "true"); |
| | | servletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT"); |
| | | servletResponse.setHeader("Access-Control-Max-Age", "3600"); |
| | | servletResponse.setHeader("Access-Control-Allow-Headers", "token,Content-Type,Content-Length, Authorization, Accept,X-Requested-With,domain,zdy"); |
| | | filterChain.doFilter(servletRequest, servletResponse); |
| | | |
| | | if (uriName != null && userSetting.getLogInDatebase()) { |
| | | if (uriName != null && userSetting != null && userSetting.getLogInDatebase() != null && userSetting.getLogInDatebase()) { |
| | | |
| | | LogDto logDto = new LogDto(); |
| | | logDto.setName(uriName); |
| | | if (ObjectUtils.isEmpty(username)) { |
| | | username = ""; |
| | | } |
| | | logDto.setUsername(username); |
| | | logDto.setAddress(servletRequest.getRemoteAddr()); |
| | | logDto.setResult(HttpStatus.valueOf(servletResponse.getStatus()).toString()); |
| | |
| | | logDto.setUri(servletRequest.getRequestURI()); |
| | | logDto.setCreateTime(DateUtil.getNow()); |
| | | logService.add(logDto); |
| | | // logger.warn("[Api Access] [{}] [{}] [{}] [{}] [{}] {}ms", |
| | | // uriName, servletRequest.getMethod(), servletRequest.getRequestURI(), servletRequest.getRemoteAddr(), HttpStatus.valueOf(servletResponse.getStatus()), |
| | | // System.currentTimeMillis() - start); |
| | | |
| | | |
| | | } |
| | | } |