我使用的是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这个问题。
答案 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具有相同的密钥,因此无法工作。将您想要的选项与||结合起来和&&