Grails:OR 角色的@Secured 注释
Grails: @Secured annotation for OR roles
我正在使用 Grails
import grails.plugin.springsecurity.annotation.Secured
@Secured({'ROLE_COMPANY', 'ROLE_BACKEND_ADMIN'})
class MobileSendersController {
但它是角色之间的 AND 关系。我需要一个或关系。允许访问 ROLE_COMPANY
或 ROLE_BACKEND_ADMIN
。
在此中,答案建议使用@PreAuthorize
。我在 Grails 中尝试过,但没有成功。也许我需要修改预注释和 post-注释,但我找不到配置。
有什么想法吗?
为什么一个控制器有两个角色?也许考虑为您的控制器设置单一权限,然后您可以将该权限添加到您的 ROLE_COMPANY 和 ROLE_BACKEND_ADMIN 角色。
如果你看一下 documentation fore @Secured
you'll see that it uses SpEL expressions (documentation,关于这个),那么你可以做很多事情。特别是,您可能希望像这样使用 hasAnyRole()
:
@Secured("hasAnyRole('ROLE_COMPANY', 'ROLE_BACKEND_ADMIN')")
这将解决问题 -
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
我正在使用 Grails
import grails.plugin.springsecurity.annotation.Secured
@Secured({'ROLE_COMPANY', 'ROLE_BACKEND_ADMIN'})
class MobileSendersController {
但它是角色之间的 AND 关系。我需要一个或关系。允许访问 ROLE_COMPANY
或 ROLE_BACKEND_ADMIN
。
在此@PreAuthorize
。我在 Grails 中尝试过,但没有成功。也许我需要修改预注释和 post-注释,但我找不到配置。
有什么想法吗?
为什么一个控制器有两个角色?也许考虑为您的控制器设置单一权限,然后您可以将该权限添加到您的 ROLE_COMPANY 和 ROLE_BACKEND_ADMIN 角色。
如果你看一下 documentation fore @Secured
you'll see that it uses SpEL expressions (documentation,关于这个),那么你可以做很多事情。特别是,您可能希望像这样使用 hasAnyRole()
:
@Secured("hasAnyRole('ROLE_COMPANY', 'ROLE_BACKEND_ADMIN')")
这将解决问题 -
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