Есть ли способ запретить запросу достичь действия в Grails с помощью фильтров - PullRequest
1 голос
/ 24 июня 2019

Я пытаюсь предотвратить запрос запроса на действие grails ("/ $ controller / $ action? / $ Id"), когда токен недействителен, чтобы он возвращал ответ JSON клиенту без вызова действия

Я попытался добавить оператор возврата в код, но все равно запрос вызывает действие.Я использую Java 7 и более старую версию Grails (Grails 2.4.3)

        class ShiroSecurityFilters {
        def filters = {
            vueJsFilter(uri: '/api/**'){
                def userObject = null
                def response_data = null
                before = {
                    def authorization_header = request.getHeader("Authorization")
                    if (authorization_header){
                        def authorization = authorization_header.split(' ')[1]
                        userObject = Collaborateur.findByAccessToken(authorization)
                        if (userObject){
                            println "Welcome Back, $userObject"
                        }else{
                            response_data = [
                                title: "filter token error"
                            ]
                            response.status = 401
                            render(response_data as JSON)
                        }
                    }
                }
            }
        }
    }

Я ожидаю, что фильтр остановит запрос от выполнения действия или его вызова, и вместо этого отправит ответ обратноклиент и не отправлять запрос на следующий ресурс в этом случае действие, я провел некоторые исследования в Интернете, но я ничего не нашел, любая помощь будет оценена

1 Ответ

3 голосов
/ 24 июня 2019

Вы должны вернуть false из фильтра before, чтобы предотвратить запуск действия.В приведенном выше исходном коде фильтр ничего не возвращает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...