【发布时间】:2018-09-13 19:58:43
【问题描述】:
在我的 Spring Boot 应用程序中,我有以下过滤器类
public class UserIdAuthenticationFilter implements Filter {
// all the handling
}
我没有在这个类上使用任何注释,我使用 applicationContext.xml 来定义这个 bean,如下所示:
<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
<security:filter-chain-map request-matcher="ant">
<security:filter-chain pattern="/lms/s/reward/*" filters="UIDAuthenticationFilter"/>
</security:filter-chain-map>
</bean>
<bean id="UIDAuthenticationFilter" class="com.mycompany.security.filter.UserIdAuthenticationFilter" >
</bean>
我创建了另一个用于加载此 xml 配置的类:
@Configuration
@ImportResource({"classpath:applicationContext.xml"})
public class XMLConfiguration {
}
现在,当我启动我的应用程序时,我可以在日志中看到过滤器正在从 applicationContext.xml 加载:
15:06:01.516 [localhost-startStop-1] INFO - Mapping filter: 'UIDAuthenticationFilter' to: [/*]
明确的说过滤器映射到/*
所以每个请求都会调用过滤器,我不想要这种行为,我希望我的过滤器应该只为我在 applicationContext.xml 中提供的模式调用。 (/lms/s/reward/*)
我也不想要this 解决方案。因为我必须在applicationContext.xml中配置过滤器,而不是在java代码中。
任何帮助将不胜感激,谢谢
【问题讨论】:
-
是的,您确实想要this 解决方案...它是用Java 编写的,并不意味着您不能在XML 中翻译它...只需为
FilterRegistration定义一个bean豆子。 -
@M.Deinum,谢谢。工作:)
标签: java spring spring-boot filter