我的应用程序基于Spring MVC和Spring Security 3.2.7,我想要为我的Web应用程序上的每个路径执行一个拦截器。 所以我在我的xml配置中输入了以下代码:
<mvc:interceptors>
<bean class="social.picnik.api.marketplace.multitenancy.interceptor.MongoMultitenantInterceptor">
<property name="defaultTenantId" value="default"/>
</bean>
</mvc:interceptors>
它适用于我的所有网址但只有一个:登录。
登录由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 。
有什么想法吗?
由于
答案 0 :(得分:2)
Spring MVC拦截器仅在到达Spring MVC的请求上调用。整个Spring Security过滤器链在 Spring MVC之前称为。对登录处理URL的请求由Spring Security处理,永远不会到达Spring MVC。
如果你想要一个&#34;拦截器&#34;对于每个URL,您可以执行servlet过滤并将其放在Spring Security之前。