Как получить параметры метода контроллера при использовании закрытия @Secured?

Я успешно настроил приложение Grails для аутентификации пользователя.

Я сопоставляю аргументы метода контроллера, используя URL-параметры, в моем UrlMappings.groovy:

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

Как получить значения $source и $ownerId в моем закрытии @Secured?

Мой метод контроллера выглядит так:

@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) {
    ...
}

Как я могу получить эти значения? Что я делаю не так, здесь?

Я думал, что этот пост даст решение, но ответ, данный там, не работает для меня:

Можно ли взломать аннотацию @Secured плагина core-security-core, чтобы иметь возможность ссылаться на параметры запроса, переданные контроллеру?

Я использую следующие 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:'
    }

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 запретить доступ.

Другие вопросы по тегам