0

我已成功设置我的 Grails 应用程序来验证用户身份。

我在 UrlMappings.groovy 中使用 URL 参数映射控制器方法参数:

"/$source/owner/$ownerId/show"(controller:"myController", action: "show", method: "GET")

如何在 @Secured 闭包中获取 $source 和 $ownerId 的值?

我的控制器方法如下所示:

@Secured(closure = {
    //null
    def testSource = params.source

    //also null
    def testOwnerId = params.ownerId

    //null
    def owner = request.ownerId

    //null
    def owner2 = request.getParameter('ownerId')

    //contains only query string params
    def grailsParams = request['org.codehaus.groovy.grails.WEB_REQUEST']?.params

    return true
})
def show(String source, String ownerId) {
    ...
}

我如何获得这些值?我在这里做错了什么?

我认为这篇文章会提供一个解决方案,但那里给出的答案对我不起作用:

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

我正在使用以下 grails 和插件版本:

    grails 2.5.1
    compile ":spring-security-core:2.0-RC5"
    compile ":spring-security-rest:1.5.3", {
        excludes 'com.fasterxml.jackson.core:jackson-databind:'
    }
4

1 回答 1

1

简短的 :

利用request.getParameter

细节 :

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

你会这样表达你的例子:

@Secured(closure={
       request.getParameter('ownerId') >=123 //this is example
})

返回true允许访问,false拒绝访问。

于 2016-08-04T01:58:46.930 回答