定義注解類:
@Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface SignCheck { RequiredType required() default RequiredType.FORCE; }
RequiredType枚舉類:
public enum RequiredType { /** * 強登錄 */ FORCE, /** * 登錄不等錄都行 */ WEAK }
定義攔截器:
public class ApiSignInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { SignCheck signCheck = InterceptorUtils.getAnnotation(handler, SignCheck.class); if (signCheck == null) { return true; } else { return signCheck(request, response); } } private boolean signCheck(HttpServletRequest request, HttpServletResponse response) { // 判斷邏輯 return false; } }