使用Spring Security时无法使用intercept-url

时间:2015-04-18 06:33:24

标签: 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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我有同样的问题。 我进行了调试,发现Spring未能parse与[{1}} roles分开comma实际上它ParseException doParseExpession. you can find the exact line [here][1]
It says it missing some data if there is a
version 4。我还没弄清楚为什么。但是,似乎@Oliver的建议现在很好。即打破两行/多行的规则

修改

解决方案:

似乎filter-security-metadata-source request-matcher期望获得use-expressions AND <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> ,即尝试:

__new__