使用 Spring 安全性时无法使用拦截-url

Unable to use intercept-url while using Spring Security

我正在对 security.xml 的访问权限进行一些更改,例如:

<intercept-url pattern="/app/admin/projectform*" access="ROLE_ADMIN,ROLE_ENGAGEMENT_MANAGER"/>

但我很困惑如何区分以下两个网址:

/userform?create=Engagement&method=add&from=list
/userform?create=manager&method=add&from=list

他们需要分配不同的角色。

我试图做一些非常相似的事情但是做不到。在检查源代码时,我意识到 spring-security 在应用粗略的 grain/url 授权时不考虑请求参数。

我最终创建了两个单独的网址。

我有同样的问题。 我调试并发现 Spring 未能 parserolescomma 分开,实际上它在 doParseExpession 处抛出 <code>ParseException .您可以在 [此处][1]
找到确切的行 如果有 comma`,它表示缺少一些数据。我不明白为什么。但是,@Oliver 的建议目前看来是个不错的建议。即打破 two/more 行

的规则

编辑

解决方案:

似乎在 version 4 filter-security-metadata-source 中期望得到 request-matcher AND use-expressions 即尝试:

<filter-security-metadata-source request-matcher="ant" use-expressions="false">
        <intercept-url pattern="/app/admin/projectform*" access="ROLE_ADMIN,ROLE_ENGAGEMENT_MANAGER"/>
 </filter-security-metadata-source>