Cookie не очищается при закрытии браузера
В настоящее время я реализую механизм автоматического входа в JSF, см.
Я проверил следующий сценарий:
Пользователь входит в систему без "Запомнить меня", а затем непосредственно закрывает браузер, не нажимая кнопку "Выйти" (если нажать кнопку "Выйти", для cookie maxAge будет установлено значение 0). Позже, если пользователь снова загружает страницу в фильтре, cookie присутствует в запросе (обычно, потому что cookie maxAge не изменяется на 0 при закрытии браузера), и пользователь автоматически входит в систему, что не что я хочу.
Есть ли способ решить это? Какая связь между cookie и сессией? Я использую сессионный объем. Как я знаю, сессия не будет уничтожена при закрытии браузера, это зависит от решения сервера. Поэтому я не могу использовать @PreDestroy. Я также не могу использовать Jquery.unload, потому что пользователь также может закрыть только вкладку, а не браузер. Также в моем приложении несколько вкладок могут быть открыты одновременно...
Какие-либо предложения?
1 ответ
Похоже, вы хотите, чтобы cookie действовал так же долго, как и открытый экземпляр браузера. Т.е. вы хотите, чтобы куки жили в течение сеанса браузера.
Просто сделайте это сессионным cookie, указав максимальный возраст -1
, Cookie будет жить столько же, сколько и экземпляр браузера.
Что касается отношений между HttpSession
и печенье, глава Как работают сервлеты? Создание экземпляров, сессий, общих переменных и многопоточности. Главное отличие в том, что HttpSession
также имеет управляемый сервером тайм-аут.