使用grails spring security来使用http方法保护URL

时间:2014-08-14 08:20:19

标签: grails spring-security http-method

我使用的是spring security 1.2.7.3 ,我希望使用http方法保护网址,换句话说,我想在config.groovy中找到类似的内容:

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

有可能吗?我知道当然有其他方法可以达到这个目的,但我更愿意以这种方式解决问题。

P.S。之前已经问过here这个问题。

1 个答案:

答案 0 :(得分: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具有相同的密钥,因此无法工作。将您想要的选项与||结合起来和&&