Отображение страницы входа в систему безопасности Grails Spring

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

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

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

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>

Вы можете изменить 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'       
   }
}
Другие вопросы по тегам