当我们想要在springboot中自定义一个Intercepter拦截器来拦截某些请求。
1.定义一个拦截器
package com.mindbook.spring_boot_user_auth.interceptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @Author wxb
* @Datatime 2019/12/15 11:22
* @Descript 自定义用户登录拦截器
*/
@Component
public class LoginInterceptor implements HandlerInterceptor {
private static final Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
logger.info("---开始进入请求地址拦截---");
//如果返回值是false,就只执行到此。
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
logger.info("---处理请求完成后视图渲染之前的处理操作---");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
logger.info("--- 视图渲染之后的操作 ---");
}
}
2.注册拦截器
package com.mindbook.spring_boot_user_auth.config;
import com.mindbook.spring_boot_user_auth.interceptor.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @Author wxb
* @Datatime 2019/12/15 11:35
* @Descript
*/
@SpringBootConfiguration
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired private LoginInterceptor loginInterceptor;
public void addInterceptors(InterceptorRegistry registry){
registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
}
}
这样就会拦截所有的请求,放弃login的请求。