Отображение страницы входа в систему безопасности Grails Spring
Я использую плагин безопасности весной в приложении Grails. Есть две причины, почему страница входа отображается
- Пользователь перешел к нему напрямую
- Пользователь попытался получить доступ к странице, доступной только зарегистрированным пользователям
Только в случае (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'
}
}