先說一下這樣子作的原理:將某一個註解配置在方法頭部,在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