我有一个带有两个 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 的任何其他方式。
我知道我可以在 上指定一个pattern
属性<http>
,但是我需要在我的 Spring Security 配置中重复 servlet 到 URL 的映射,这不是 DRY。
如何将<http>
元素映射到这样的特定 servlet?或者我是否需要扩展<http>
元素并自己定义我所有的 Spring Security bean?