是否有可能破解spring-security-core插件@Secured注释,以便能够引用给控制器的请求参数?

时间:2014-10-30 16:19:31

标签: grails spring-security

我正在使用Grails 2.3.3spring-security-core:2.0-RC4插件。

我试图通过保护控制器操作来保护控制器操作,具体取决于来自带参数的服务的方法调用的结果。此参数应该是请求参数内的内容。

我希望能够做到以下几点:

@Secured("@mySecurityService.myCustomCheck(params.id)")
def myAction(){
    //do some things
}

我设法能够做到以下几点:

@Secured("@mySecurityService.myCustomCheck()")

但现在我不知道如何访问发送到控制器的请求参数。

在架构上是否可以在params表示法中引用@Secured变量?

PS:我知道你会让我使用spring-security-acl插件。我的问题是,它还增加了一些我认为不需要的其他东西。

1 个答案:

答案 0 :(得分:4)

在2.0中,您可以使用闭包作为注释的检查;在文档中有一个简短的文章和示例:https://grails-plugins.github.io/grails-spring-security-core/v2/guide/newInV2.html

你这样表达你的榜样:

@Secured(closure={
    ctx.mySecurityService.myCustomCheck(
       request.getParameter('id'))
})

返回true以允许访问。

请注意,ApplicationContext可用作ctx变量,请求可用作request;这是使用SpEL时可用的其他变量和方法的补充(有关详细信息,请参阅Spring Security文档)。 params不可用,但您可以使用request.getParameter

访问值