使用Grails组合安全访问限制

时间:2014-12-22 11:25:45

标签: grails spring-security

我正在使用spring-security-core + spring-security-rest,在大多数端点我在Config.groovy中使用URL静态规则

e.g。

'/app/clientdata/**':              ['IS_AUTHENTICATED_FULLY'],
'/app/opendata/**':                ['permitAll'],    
'/app/secretdata/**':              ['hasRole("ADMIN_ROLE")'],

但对于某些端点,我对HTTP METHOD(get,post,...)或对象方法的限制感兴趣。

问题是......应该/我可以混合使用不同的证券化方法(url静态规则+基于类的注释,方法)?

是否有任何选项允许我根据HTTP方法进行限制...例如一些方法,其中一个角色是其他角色?

谢谢,

2 个答案:

答案 0 :(得分:1)

是的,但它是新的,尚未记录。而不是像键是模式的当前样式那样使用简单的映射,而值是角色和表达式的列表,每行都是带有三个键的映射;每行patternaccesshttpMethod httpMethod是可选的。所以它看起来像

[
   [pattern: '/app/clientdata/**', access: ['IS_AUTHENTICATED_FULLY'], httpMethod: 'GET'],
   [pattern: '/app/opendata/**', access: ['permitAll']],
   [pattern: '/app/secretdata/**', access: ['hasRole("ADMIN_ROLE")'], httpMethod: 'POST']
]

答案 1 :(得分:0)

同样正如我所经历的那样,完全可以混合这两种不同的方式,这样你就可以定义一个'/ app / opendata / **':['permitAll'],然后在对象方法级别定义一个更严格的约束@Secured([ “ROLE_XXX”])