跟springmavc一样先创建一个Interceptor类实现HandlerInterceptor接口
public class MyLoginHandlerInterceptor implements HandlerInterceptor{
//目标方法执行之前
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
Object user = request.getSession().getAttribute("name");
if(user==null){
//页面可以直接用thymeleaf th:utext取值
request.setAttribute("message", "<h5 style='color:#F00'>权限不足请登录</h5>");
request.getRequestDispatcher("/login.html").forward(request, response);
return false;
}else{
return true;
}
// TODO Auto-generated method stub
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
}
创建springboot Bean扫描 要不然springboot不知道你创建的拦截
@Bean
public WebMvcConfigurerAdapter support(){
WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// TODO Auto-generated method stub
//super.addInterceptors(registry);
//拦截所有 excludePathPatterns放行
registry.addInterceptor(new MyLoginHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/","/index.html","/signin");
}
};
return adapter;
}