/**
-
注册类
-
@author
*/
@Configuration
public class ResourcesConfig implements WebMvcConfigurer
{@Autowired
private AuthorizationD authorizationD;/**
-
注册自定义拦截规则
*/
@Override
public void addInterceptors(InterceptorRegistry registry)
{registry.addInterceptor(authorizationD);
}
-
}
//自定义的拦截器
@Component
@Slf4j
public class AuthorizationD implements HandlerInterceptor {
//拦截器:请求之前preHandle
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler) throws Exception {
/**该方法是否存在校验注解**/
if (!(handler instanceof HandlerMethod)) {
return true;
}
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
/**如果有注解Authorize,就需要验证token**/
if (method.isAnnotationPresent(Token.class)) {
Token userLoginToken = method.getAnnotation(Token.class);
if (userLoginToken.required()) {
//处理业务逻辑
return true;
}
}
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Object o, ModelAndView modelAndView) throws Exception {
}
//拦截器:请求之后:afterCompletion
@Override
public void afterCompletion(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Object o, Exception e) {
}
//自定义注解
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME) //注解在哪个阶段执行
public @interface Token {
boolean required() default true;
}