2015-08-12 4 views
-1

Мое приложение основано на Spring MVC и Spring Security 3.2.7, и у меня есть перехватчик, который я хочу выполнить для каждого пути в моем веб-приложении. Так что я положил в мой XML конфиг следующий код:Spring MVC Interceptor and Form Login

<mvc:interceptors> 
     <bean class="social.picnik.api.marketplace.multitenancy.interceptor.MongoMultitenantInterceptor"> 
      <property name="defaultTenantId" value="default"/> 
     </bean> 
</mvc:interceptors> 

Он отлично работает для всех моих URL-адресов, кроме одного: логин.

Войти выполняются Spring Security с входом-формой, код выглядит следующим образом:

<security:form-login 
       authentication-success-handler-ref="mySuccessHandler" 
       authentication-failure-handler-ref="myFailureHandler" 
       login-processing-url="/picnik-rest/login" 
       username-parameter="username" 
       password-parameter="password" 

/> 

я пропустить оставшуюся конфигурацию, но сам Логин он работает.

Проблема в том, что мой перехватчик не рассмотрел /picnik-rest/login.

Любая идея?

Благодаря

ответ

1

Весеннее MVC перехватчик вызывается только на запросы, достигает Spring MVC. Вся цепочка фильтров Spring Security называется до Spring MVC. Запросы на URL-адрес для обработки данных обрабатываются Spring Security и никогда не достигнут Spring MVC.

Если вы хотите использовать «перехватчик» для каждого URL-адреса, вы можете сделать фильтр сервлетов и поставить его перед Spring Security.