Как реализовать страницу времени ожидания в Grails - PullRequest
2 голосов
/ 12 августа 2011

Мне нужна помощь в работе с таймаутами в приложении Grails.

Контекст: В моем приложении Grails отображается конфиденциальная информация.Очевидно, это означает, что кто-то не может оставаться в системе, и, если они забывают выйти из системы, мне нужно их отключить.Теперь я реализовал систему, подобную этой:

-При успешном входе пользователя в систему переменная сеанса isValid имеет значение true.

-Во всех моих контроллерах, если вызывается методэто может сделать или перенаправить в GSP, я проверяю это значение.Если в любое время isValid имеет значение null, они сразу же перенаправляются на страницу ошибки.

-Каждый gsp имеет функцию времени ожидания jquery, которая перенаправляет пользователя на страницу ошибки тайм-аута, если у него истекает время, и устанавливает для isValid значение falseчто теоретически должно помешать им использовать приложение в любом случае).

Перенаправления все работают нормально.Проблема, с которой я столкнулся, заключается в том, что, когда у пользователя истекает время ожидания, он все равно может использовать кнопку «Назад», чтобы вернуться к сохраненной в кэше версии последней страницы, на которой он находился.Очевидно, что это противоречит цели тайм-аута.

Вопрос: Кто-нибудь знает, как я могу запретить пользователю покидать страницу тайм-аута или гарантировать, что по истечении этого времени он всегда будет перенаправлен настраница тайм-аута?

Спасибо

1 Ответ

1 голос
/ 12 августа 2011

Перенаправляет все работает нормально.Проблема, с которой я столкнулся, заключается в том, что, когда у пользователя истекает время ожидания, он все равно может использовать кнопку «Назад», чтобы вернуться к сохраненной в кэше версии последней страницы, на которой он находился.Очевидно, что это устраняет цель тайм-аута.

Почему бы не добавить запрос AJAX обратно в ваше приложение при загрузке страницы (который должен запускаться, когда пользователь нажимает кнопку возврата в браузере), который проверяетсеанс все еще действителен и если не перенаправляет пользователя на страницу тайм-аута?Должно быть достаточно простым.

Кроме того, если информация является конфиденциальной, убедитесь, что вы устанавливаете HTTP-заголовки, связанные с истечением срока действия кэша / содержимого, чтобы браузер знал, что он не должен кэшировать страницы.Недостатком здесь является то, что некоторые браузеры не полностью соблюдают эти настройки.

...