实现拦截器的两个步骤
- 自定义拦截器实现HandlerInterceptor接口
- 创建一个配置类继承WebMvcConfigurerAdapter类并重写addInterceptors方法
代码
1、自定义拦截器
@Component
public class AdminLoginInterceptor implements HandlerInterceptor {
// 在请求处理之前调用,只有返回true才会执行请求
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
// 得到session
HttpSession session = httpServletRequest.getSession(true);
// 得到对象
Object admin = session.getAttribute("admin");
// 判断对象是否存在
if(admin!=null){
return true;
}else{
// 不存在则跳转到登录页
httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/login/adminLogin");
return false;
}
}
// 试图渲染之后执行
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
// 在请求处理之后,视图渲染之前执行
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}
2、自定义配置类继承WebMvcConfigurerAdapter
@SpringBootConfiguration
public class AdminLoginAdapter extends WebMvcConfigurerAdapter {
@Autowired
AdminLoginInterceptor adminLoginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(adminLoginInterceptor).addPathPatterns("/admin/**").excludePathPatterns("/login/**");
super.addInterceptors(registry);
}
}