Как показать настроенную страницу ошибки для запрещенного доступа к URL в граалях 3.3.9 - PullRequest
0 голосов
/ 18 февраля 2020

Приложение My grails 3.3.9 имеет различные модули, реализованные с различным доступом на основе ROLE с использованием пружинной защиты.

Доступ к AdminController через ROLE_ADMIN. Если пользователь, не являющийся администратором, вошел в систему и попытался получить доступ к Admin URL, Grails покажет

[Image] Сообщение об ошибке Grails: Sorry, you're not authorized to view this page.

Я хочу показать мое пользовательское сообщение.

[Image: ] Пользовательское сообщение: 403 Access Forbidden

приложение. groovy

grails.plugin.springsecurity.interceptUrlMap = [
        [pattern: '/user/**', access: ['IS_AUTHENTICATED_FULLY']],
        [pattern: '/role/**', access: ['ROLE_ADMIN']],
        [pattern: '/', access: ['IS_AUTHENTICATED_FULLY']],
        [pattern: '/admin/*', access: ['ROLE_ADMIN']]]

URLMappings

"500"(controller: "error", action: "internalServerError")
"404"(controller: "error", action: "notFound")
"403" (controller: "error", action: "forbidden")
"403"(view: "/error/forbidden")

У меня по отдельности 403.

500 & 404 работает правильно.

1 Ответ

2 голосов
/ 18 февраля 2020

В URlMappings вы можете установить сопоставление с кодом ответа и выбрать контроллер или представление для ответа, например:

static mappings = {
    // ... other mappings ...
    // Send 403's to a controller if you'd like to do additional logic
    "403"(controller: "errors", action: "forbidden")
    // Or just render a static view under grails-app/views/errors/forbidden.gsp
    "403"(view: "/errors/forbidden")
}

См .: http://docs.grails.org/4.0.1/guide/single.html#mappingToResponseCodes

...