2014-01-20 2 views
0

Я работаю над Spring Framework, и я хотел написать перехватчик, и в конце концов я написал его, и он работает нормально. , но в какой-то момент я не хочу, чтобы мой перехватчик перехватывал запрос, когда пользователь хочет выйти из системы, а сеанс недействителен. Но это не происходит по моим ожиданиям.Функция Spring, Interceptor excludePathPatterns не работает должным образом

Я добавляю перехватчики, расширяя WebMvcConfigurerAdapter и с использованием метода addInterceptors и вот код.

public void addInterceptors(InterceptorRegistry registry) { 
    super.addInterceptors(registry); 
    registry.addInterceptor(loggerInterceptor); 
    registry.addInterceptor(authenticationInterceptor).excludePathPatterns("/invalidate"); 
    } 

Я сделал что-то не так. excludePathPatterns -> Мой URL-адрес заканчивается/invalidate. Поэтому, пожалуйста, направляйте меня, как правильно настроить шаблон.

+0

Я использовал следующие методы, но он всегда запускает аутентификационный перехватчик. /**/Invalidate *, **/Invalidate *, */Invalidate *, /**/Invalidate, **/аннулированию –

ответ

5

Вы пробовали, как показано ниже?

@Configuration 
@EnableWebMvc 
public class MyWebConfig extends WebMvcConfigurerAdapter 
{ 
    @Override 
    public void addInterceptors(InterceptorRegistry registry) 
    { 
    registry.addInterceptor(new MyCustomInterceptor()) 
      .addPathPatterns("/**") 
      .excludePathPatterns("/foo/**"); 
    } 
} 

Reference

см это java doc для лучшего понимания.

+0

Я попробовал это одно и то же, и это не работает для меня. Мой перехватчик захватывает каждый запрос, не соблюдая 'excludePathPatterns (...)'. У меня есть простой контроллер, который я хочу обработать конкретным запросом, но не могу получить запрос из-за того, что мой перехватчик захватывает весь запрос. –

0

Это ненужная дополню:

addPathPatterns("/**") 

MappedInterceptor.java:

+0

Этот ответ не затрагивает вопрос; это комментарий к другому ответу. Для тех, кто запутался в релевантности «MappedInterceptor», экземпляр этого объекта создается за кулисами при добавлении перехватчика. См. Https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/InterceptorRegistration.java. Примечание внизу этого класса в методе 'toArray', что если« Список »включенных шаблонов пуст, возвращается« null », а не пустой массив. – Paul

0

В моем случае, я должен был отладить весь FrameworkServlet весны, а где-то, было брошено исключение говорят : «Без параметров hashId».

Оказалось, что мой запросParam не был назван hashId, но id, поэтому перехватчик был правильно применен к этому URL-адресу служебной службы.

Удостоверьтесь, что excludedPattern начал с "/" и запрашивается с именами параметров точно так же, как определено в контроллере.

Смежные вопросы