Приложение My Grails использует плагин безопасности Spring. Когда вы пытаетесь получить доступ к защищенному ресурсу, отображается форма входа в систему и путь к этому ресурсу сохраняется в session.SPRING_SECURITY_SAVED_REQUEST_KEY
.
Я наблюдал следующее поведение:
- Перейдите к форме входа напрямую
session.SPRING_SECURITY_SAVED_REQUEST_KEY == null
, как и ожидалось
- Вернуться на главную страницу без входа в систему
- Попытка доступа к защищенному ресурсу
/foo/bar
. Форма входа отображается с путем к защищенному ресурсу, сохраненному в session.SPRING_SECURITY_SAVED_REQUEST_KEY
, как и ожидалось
- Вернуться на главную страницу без входа в систему
- Доступ к форме входа напрямую. Путь к
/foo/bar
все еще сохраняется в session.SPRING_SECURITY_SAVED_REQUEST_KEY
не так, как ожидалось
Если я сейчас войду, я перенаправлюсь на /foo/bar
, хотя на шаге (5) я не пытался получить доступ к этому ресурсу - форма входа отображалась, потому что я перешел к ней напрямую.
Возникает вопрос: что должно отображаться после успешного входа в систему, когда пользователь переходит непосредственно на страницу входа? Страница, на которой они находились до входа в систему (PBL), выглядит разумной по умолчанию.
Подводя итог, хочу сказать следующее поведение:
- Пользователь переходит к форме входа напрямую, и никакие значения не сохраняются в
session.SPRING_SECURITY_SAVED_REQUEST_KEY
=> перенаправить на PBL после входа в систему PASS
- Пользователь получает доступ к защищенному ресурсу => перенаправить на защищенный ресурс после входа в систему PASS
- Пользователь переходит к форме входа в систему напрямую и значение сохраняется в
session.SPRING_SECURITY_SAVED_REQUEST_KEY
=> перенаправить на PBL после входа в систему FAIL