Cookie не очищается при закрытии браузера

В настоящее время я реализую механизм автоматического входа в JSF, см.

Cookie maxAge всегда -1

Я проверил следующий сценарий:

Пользователь входит в систему без "Запомнить меня", а затем непосредственно закрывает браузер, не нажимая кнопку "Выйти" (если нажать кнопку "Выйти", для cookie maxAge будет установлено значение 0). Позже, если пользователь снова загружает страницу в фильтре, cookie присутствует в запросе (обычно, потому что cookie maxAge не изменяется на 0 при закрытии браузера), и пользователь автоматически входит в систему, что не что я хочу.

Есть ли способ решить это? Какая связь между cookie и сессией? Я использую сессионный объем. Как я знаю, сессия не будет уничтожена при закрытии браузера, это зависит от решения сервера. Поэтому я не могу использовать @PreDestroy. Я также не могу использовать Jquery.unload, потому что пользователь также может закрыть только вкладку, а не браузер. Также в моем приложении несколько вкладок могут быть открыты одновременно...

Какие-либо предложения?

1 ответ

Решение

Похоже, вы хотите, чтобы cookie действовал так же долго, как и открытый экземпляр браузера. Т.е. вы хотите, чтобы куки жили в течение сеанса браузера.

Просто сделайте это сессионным cookie, указав максимальный возраст -1, Cookie будет жить столько же, сколько и экземпляр браузера.

Что касается отношений между HttpSession и печенье, глава Как работают сервлеты? Создание экземпляров, сессий, общих переменных и многопоточности. Главное отличие в том, что HttpSession также имеет управляемый сервером тайм-аут.

Другие вопросы по тегам