拦截器功能
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Objects;
/**
* 管理员拦截器
*/
@Slf4j
public class AdminInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
HttpSession session = request.getSession();
if (Objects.nonNull(session.getAttribute("token"))) {
return true;
}
log.info("无权访问:{}", request.getRequestURI());
response.setStatus(401);
return false;
}
}
拦截器注册
/**
* 拦截器注册
*/
@Configuration
public class Interceptor implements WebMvcConfigurer {
@Bean
UserInterceptor userInterceptor() {
return new UserInterceptor();
}
@Bean
ReqInterceptor reqInterceptor() {
return new ReqInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(userInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/login","/","/*","/css/**","/fonts/**","/img/**","/js/**");
registry.addInterceptor(reqInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/fileUpload","/excel");
}
}
注意:/*
代表一级访问,/**
代表所有访问
响应请求拦截
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
/**
* 响应请求拦截
*/
@Slf4j
@ControllerAdvice
public class ResponseInterceptor implements ResponseBodyAdvice<Object> {
@Override
public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) {
return false;
}
@Override
public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
String path = serverHttpRequest.getURI().getPath();
log.info("请求路径:{}---响应数据:{}", path, o);
return o;
}
}