2010-06-15 4 views
6

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

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

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

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

def targetURI = request.forwardURI - request.contextPath 
+1

спасибо миллион! – Mulone

Смежные вопросы