Перенаправить после входа в систему? - PullRequest
6 голосов
/ 15 июня 2010

в моем приложении Grails у меня есть пара простых фильтров безопасности (обратите внимание, это всего лишь прототип, а не коммерческое приложение:

securityCheckFilter(controller:'overview', invert:true) {
            before = {
                if(!session?.gaSession?.gaUser) {
                    flash.message = "You are not authorised to see this page. Please login."
                    redirect(controller:'overview',action:'login')
                    return false
                }
                return true
            }
        }

Это означает, что, помимо «обзора» контроллеров, который обрабатывает вход / регистрацию, все остальные контроллеры требуют аутентификации. Проблема в том, что я хотел бы реализовать этот типичный поток:

(1) пользователь пытается защитить url (2) перенаправление на логин (3) успешный вход (4) перенаправление на URL

В моем коде это работает до пункта 3, но мне не хватает 4.

Есть намеки?

1 Ответ

6 голосов
/ 15 июня 2010

Это на самом деле довольно легко. Just

  • отправить целевой URI (из пункта 1 в вашем вопросе) в качестве параметра для действия / вида входа
  • убедитесь, что ваша форма входа перенаправляет этот параметр в действие аутентификации (например, через скрытое поле)
  • в действии аутентификации, если вход был успешным, просто перенаправьте на этот URI

Чтобы получить целевой URI (в вашем фильтре), просто удалите путь контекста из прямого URI:

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