Spring boot 注冊攔截器的方法 : https://github.com/leelance/spring-boot-all/tree/master/spring-boot-samples
@EnableAutoConfiguration @ComponentScan("com.lance") @EntityScan("com.lance.entity") @EnableJpaRepositories("com.lance.repository") public class WebAppConfig extends WebMvcConfigurerAdapter{ @Autowired private Crawler crawler; protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(WebAppConfig.class); } public static void main(String[] args) { SpringApplication.run(WebAppConfig.class, args); } /** * 配置攔截器 * @author lance * @param registry */ public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new UserSecurityInterceptor()).addPathPatterns("/user/**"); } /** * spring boot 定時任務 */ @Scheduled(cron="0 0 22 * * ?") public void reportCurrentTime() { crawler.getBlogList(1); } }
/** * 攔截未登錄的用戶信息 * @author lance * 2014-6-10下午9:57:20 */ public class UserSecurityInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //驗證用戶是否登陸 Object obj = request.getSession().getAttribute("cur_user"); if (obj == null || !(obj instanceof UserEntity)) { response.sendRedirect(request.getContextPath() + "/login"); return false; } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }