отображение страницы входа в систему безопасности grails spring

Я использую подключаемый модуль безопасности Spring в приложении Grails. Страница входа отображается по двум причинам.

  1. Пользователь перешел к нему напрямую
  2. Пользователь попытался получить доступ к странице, которая доступна только зарегистрированным пользователям.

Только в случае (2) я хочу отобразить сообщение типа «вы пытались получить доступ к странице, требующей входа в систему», но в коде GSP страницы входа я не могу найти способ отличить (1) и (2), возможно ли это?


person Dónal    schedule 20.01.2012    source источник


Ответы (2)


Когда вас перенаправляют, Spring Security сохраняет SavedRequest в сеансе под ключом SPRING_SECURITY_SAVED_REQUEST_KEY, поэтому вы можете проверить его наличие в auth.gsp:

<g:if test='${session.SPRING_SECURITY_SAVED_REQUEST_KEY}'>
   // display "you attempted to access a page that requires login"
</g:if>
<g:else>
   // direct access to login
</g:else>
person Burt Beckwith    schedule 20.01.2012

Вы можете изменить URL-адрес различных конфигураций безопасности Spring так, чтобы он указывал на контроллер, а затем имел ответвление на основе информации в сеансе. В проекте 1.3.7 сделано что-то вроде

security {
  authenticationFailureUrl = '/logout/doLogout'
  afterLogoutUrl = '/logout/doLogout'
}

тогда имел

class LogoutController {
   def doLogout = {
       def wasHere = session.getAttribute('some-attribute-you-set')
       if (wasHere) render view: 'requirelogin'
       else render view: 'normallogin'       
   }
}
person hvgotcodes    schedule 20.01.2012