Spring security 如何映射Spring Security<;http>;元素添加到特定servlet上

Spring security 如何映射Spring Security<;http>;元素添加到特定servlet上,spring-security,Spring Security,我有一个web应用程序,它有两个servlet和与每个servlet关联的多个映射,即 web.xml: <servlet-mapping> <servlet-name>cheese</servlet-name> <url-pattern>/edam/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name&

我有一个web应用程序,它有两个servlet和与每个servlet关联的多个映射,即

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安全性应用到这个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>

SpringSecurityFilterChainchese
奶酪
springSecurityFilterChainDog
狗
使用SpringSecurity3.1,我能够定义多个
元素,这看起来是一个很好的方法。但是,我不知道如何为每个
元素指定bean名称,也不知道如何将元素映射到servlet

我知道我可以,但是我需要在我的Spring安全配置中重复servlet到URL的映射,这还不是干巴巴的


如何将
元素映射到这样的特定servlet?或者我需要扩展
元素并自己定义所有的Spring安全bean吗?

从您的示例中不确定,但您真的需要两个过滤器吗

你读过吗?这会给你一个正确的方向

可以在单个元素中包含多个元素;那对你有用吗?我不知道有没有其他方法可以满足你的要求。记住把最具体的规则放在最上面,因为这是它们被评估的顺序


有时你不能得到一个完全干燥的解决方案,至少它不是代码。如果您真的担心,那么使用一些机制,比如Ant来填充servlet名称和模式元素。

查看Spring Security的源代码,似乎可以通过在
元素上提供
id
名称
来实现,但是Spring Security XML模式阻止了这一点!我也提出了相应的问题。

是的,这是我在上面链接的公认答案。我的问题是专门寻找一种命名
元素的方法,这样我就可以将它们链接到特定的过滤器,从而使我的URL到servlet映射干燥。哎呀,我以为这是一个超链接,但当我在平板电脑上单击它时,它并没有带我到其他页面,所以我认为它只是带下划线的文本;不同的浏览器会给出不同的结果。我请求的Spring安全问题作为边缘案例被拒绝,因此没有解决方案。