Я использую данные Spring и напрямую бьюсь о конечную точку без контроллера. Поскольку я хотел проверить авторизацию, создал перехватчик, который проверяет запрос на основе некоторых утверждений в токене авторизации.
@Configuration
@Order(1)
public class AuthConfig implements WebMvcConfigurer {
@Autowired
AuthInterceptor requestInterceptor;
@Bean
public MappedInterceptor exampleInterceptor() {
return new MappedInterceptor(new String[]{"/api/**"}, requestInterceptor);
}
}
@Component
public class AuthInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//validate authorization
if (authorized) {
return true;
} else {
return false;
}
}
}
это прекрасно работает. Теперь я хочу добавить другой перехватчик, чтобы я мог перехватить один запрос и выполнить какой-то процесс. Я делаю, потому что этот API не имеет контроллера / службы, поэтому перехват это то, что я думал, как это сделать
@Configuration
@Order(2)
public class ProcessConfiguration implements WebMvcConfigurer {
@Autowired
ProcessInterceptor requestInterceptor;
@Bean
public MappedInterceptor processInterceptor() {
return new MappedInterceptor(new String[]{"/api/entity/*"}, requestInterceptor);
}
}
@Component
public class ProcessInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// do some process
return true;
}
}
Итак, я хотел сначала вызвать auth interceptor и затем обработать interceptor, если запрос авторизован. И я использовал @Order, чтобы отразить то же самое, но он не работает, как ожидалось. Есть ли другой способ сделать это или я делаю это неправильно?