先说一下这样子作的原理:将某一个注解配置在方法头部,在spring实例化的时候会将注解以切面的形式注入给方法,在拦截的地方判断当前方法有没有注入指定的注解类。spring
1.先声明一个注解类(类中不须要作任何逻辑操做)ide
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface TokenNotValidation{
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Token{
}
2.在你的token拦截类中作一个判断设spa
public class intercept extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
TokenNotValidation annotation = ((HandlerMethod) handler).getMethodAnnotation(TokenNotValidation.class); Token token = ((HandlerMethod) handler).getMethodAnnotation(Token.class); // 若是有@TokenNotValidation ,则不验证token if (annotation != null) { return true; } // 或者须要作权限认真,就认证 if (annotation != null) { //开始权限的逻辑判断............. return true; } } }
3.最后在你不须要拦截的方法头部加一个@TokenNotValidation,或者在须要认证的地方加@Token就能够了!code