【发布时间】:2012-06-23 16:43:45
【问题描述】:
我有一个带有两个 servlet 和多个与每个 servlet 关联的映射的 Web 应用程序,即
web.xml:
<servlet-mapping>
<servlet-name>cheese</servlet-name>
<url-pattern>/edam/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>cheese</servlet-name>
<url-pattern>/cheddar/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dog</servlet-name>
<url-pattern>/poodle/*</url-pattern>
</servlet-mapping>
...
我现在想将 Spring Security 应用到这个 Web 应用程序,为每个 servlet 使用不同的安全配置。这是因为 servlet 具有不同的身份验证要求。因此,我希望只有两个过滤器映射:
<filter-mapping>
<filter-name>springSecurityFilterChainCheese</filter-name>
<servlet-name>cheese</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>springSecurityFilterChainDog</filter-name>
<servlet-name>dog</servlet-name>
</filter-mapping>
使用 Spring Security 3.1,我可以定义多个 <http> 元素,这看起来是个不错的方法。但是,我看不到如何为每个 <http> 元素指定 bean 名称或将元素映射到 servlet 的任何其他方式。
我知道我可以specify a pattern attribute on <http>,但是我需要在我的 Spring Security 配置中重复 servlet 到 URL 的映射,这不是 DRY。
如何将<http> 元素映射到这样的特定 servlet?还是我需要扩展 <http> 元素并自己定义我所有的 Spring Security bean?
【问题讨论】:
标签: spring-security