在Grails我正在使用
import grails.plugin.springsecurity.annotation.Secured
@Secured({'ROLE_COMPANY', 'ROLE_BACKEND_ADMIN'})
class MobileSendersController {
但它在角色之间建立了AND关系。我需要OR关系。允许访问ROLE_COMPANY
或ROLE_BACKEND_ADMIN
。
在此question中,答案建议使用@PreAuthorize
。我在Grails中尝试过,但没有运气。也许我需要修改注释前后,但我无法找到配置。
有什么想法吗?
答案 0 :(得分:7)
如果你看一下documentation前@Secured
,你会看到它使用SpEL表达式(documentation,关于此),所以你可以做很多事情。特别是,您可能希望使用hasAnyRole()
,如下所示:
@Secured("hasAnyRole('ROLE_COMPANY', 'ROLE_BACKEND_ADMIN')")
答案 1 :(得分:5)
这可以解决问题 -
import grails.plugin.springsecurity.annotation.Secured
@Secured(['ROLE_COMPANY', 'ROLE_BACKEND_ADMIN'])
class MobileSendersController {
请参阅文档http://grails-plugins.github.io/grails-spring-security-core/v3/index.html#securedAnnotations
答案 2 :(得分:0)
为什么一个控制器有两个角色?也许考虑为您的控制器设置一个权限,然后您可以将权限添加到您的ROLE_COMPANY和ROLE_BACKEND_ADMIN角色。