Перенаправление после входа в систему?

в моем приложении 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.

Какие-либо подсказки?

6
задан Mulone 15 June 2010 в 16:03
поделиться

1 ответ

На самом деле это довольно просто. Просто

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

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

def targetURI = request.forwardURI - request.contextPath
6
ответ дан 17 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: