4

我正在使用 spring security 1.2.7.3,并且我想使用 http 方法保护 URL,换句话说,我希望在我的 config.groovy 中有这样的东西:

grails.plugins.springsecurity.interceptUrlMap = [
    '/api/person/**':  ['ROLE_ADMIN'], //IF HTTP "POST"
    '/api/person/**':  ['IS_AUTHENTICATED_ANONYMOUSLY'], //IF HTTP "GET"
}

可能吗?我知道当然还有其他方法可以实现这一点,但我更喜欢以这种方式解决问题。

ps这个问题之前已经在这里问过了。

4

1 回答 1

1

我测试了以下,它似乎工作得很好:

grails.plugin.springsecurity.securityConfigType = SecurityConfigType.InterceptUrlMap
grails.plugin.springsecurity.interceptUrlMap = [
    '/myFirst/**': ["request.getMethod().equals('GET') || hasRole('ROLE_ADMIN')"],
    '/mySecond/**': ["permitAll"]
]

我基于以下链接中找到的文档使用 request.getMethod() 并在使用 || 时采取了一些自由。表达。

http://grails-plugins.github.io/grails-spring-security-core/guide/requestMappings.html

在您的示例中,您为“api/person/**”提供了两个条目,但不幸的是,这不起作用,因为每个条目都具有相同的 interceptUrlMap 键。将您想要的选项与 || 结合起来 和 &&。

于 2014-10-21T18:21:13.603 回答