как вернуть 403 на api-rest grails при недопустимой роли - PullRequest
0 голосов
/ 17 июня 2020

У меня есть эта конфигурация в приложении. groovy

grails.plugin.springsecurity.controllerAnnotations.staticRules = [
        [pattern: '/',                  access: ['permitAll']],
        [pattern: '/application/index', access: ['permitAll']], // show application index whithout authenticantion.
        [pattern: '/notAuthorized',     access: ['permitAll']], // permitAll to render notAuthorized json.
        [pattern: '/**',            access: ['ROLE_ADMIN', 'ROLE_OTHER']] // valid paths in api to require authentication.
]

В контроллере у меня есть:

FooController {

    @Secured(['ROLE_ADMIN'])
    def action1() {
        /*code*/
    }

    @Secured(['ROLE_OTHER'])
    def action2() {
        /*code*/
    }
}

Когда пользователь имеет ROLE_OTHER и пытается получить доступ к /api/foo/action1 это не позволяет, и это правильно, потому что у него нет разрешения, однако статус возврата - 404. Я понимаю, что эти URL-адреса не отображают их для ролей, у которых нет разрешения, но есть ли способ devovler 403 вместо 404?

1 Ответ

0 голосов
/ 18 июня 2020

Зависит от подключаемого модуля Grails API. Плагин BeAPI API автоматически проверяет роли и делает это (дополнительное кодирование не требуется). Вам просто нужно обязательно добавить роли в свою схему:

        "update": {
            "METHOD": "PUT",
            "DESCRIPTION": "Description for update",
                "ROLES": {
                "BATCH": ["ROLE_ADMIN"]
            },
            "REQUEST": {
                "ROLE_ADMIN":["firstName","passwordExpired","accountExpired","oauthProvider","username","accountLocked","password","lastName","oauthId","enabled","avatarUrl","email","id","version"]
            },
            "RESPONSE": {
                "ROLE_ADMIN":["id"]
            }
        },

О, и поэтому никто не блокирует этот ответ, я поддерживаю указанный плагин.

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