Cookie не читается
Я реализовал функцию "Запомнить меня" в своем веб-приложении. Я сделал это с помощью файла cookie, который содержит имя пользователя / пароль, зашифрованные с использованием RSA.
Я добавляю куки при входе в систему; если после этого я выхожу из системы (не закрывая браузер), cookie читается нормально, и на странице входа в систему я вижу имя пользователя / пароль уже введено. Но если я закрою браузер; или закройте вкладку и снова запустите приложение, когда файлы cookie считываются, единственным файлом cookie, который читается, является JSESSIONID. cookie с учетными данными не находится в массиве, возвращаемом ((HttpServletRequest)facesContext.getExternalContext().getRequest()).getCookies();
хотя я могу видеть это в браузере. это почему?
Это код, который создает куки:
String credentials = username + "?" + password;
Cookie c = CookieHandler.getInstance().createCookie("vtcred", credentials, rememberMe);
FacesContext facesContext = FacesContext.getCurrentInstance();
((HttpServletResponse) facesContext.getExternalContext().getResponse()).addCookie(c);
и метод createCookie:
public Cookie createCookie(String name, String value, boolean rememberMe) {
value = encript(value);
Cookie credCookie = new Cookie(name, value);
credCookie.setHttpOnly(true);
if(rememberMe) {
credCookie.setMaxAge(86400);
}
else {
credCookie.setMaxAge(0);
}
return credCookie;
}
Изменить: я устанавливаю максимальный возраст куки на один день; и в браузере я вижу, что cookie истекает завтра, так что это не проблема
Заранее спасибо, Дамиан
edit2: это очень странно, но, похоже, сейчас работает. Я продолжу проверять это и сообщу. Благодарю.
2 ответа
Я нашел, почему иногда печенье не читается. Это связано с атрибутом пути.
Если у кого-то возникла эта проблема, установите путь к cookie, например:
Cookie c = new Cookie("name", "value");
cookie.setMaxAge(86400);
cookie.setPath("/");
С уважением
Вы можете установить cookie с датой истечения срока действия. Если вы этого не сделаете, он будет длиться столько же, сколько и сеанс браузера.