拦截器的使用
1注册一个拦截器
@Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { //注册一个拦截器 @Autowired AuthInterceptor authInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(authInterceptor).addPathPatterns("/**"); } }
2编写拦截器逻辑
@Component public class AuthInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //.... }
注解的使用
1编写一个注解
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) // source : override class runtime public @interface LoginRequire { boolean autoRedirect() default true; }
2在拦截器中获取该路由的注解,并添加业务逻辑
@Component public class AuthInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //.... } //判断是否该请求需要用户登录 //取到请求的方法上的注解 LoginRequire HandlerMethod handlerMethod = (HandlerMethod) handler; LoginRequire loginRequire = handlerMethod.getMethodAnnotation(LoginRequire.class); if(loginRequire!=null){ // }else{ //