2012-01-20 4 views
1

Я использую плагин весенней безопасности в приложении Grails. Есть две причины, по которым Войти страница получает отображенныеgrails spring security login page display

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

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

ответ

0

Вы можете изменить URL-адрес различных конфигураций весенней безопасности, чтобы указать на контроллер, а затем настроить его на основе информации в сеансе. В 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'  
    } 
} 
1

Когда попадаю, хранит 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>