Я реализовал функцию "Запомнить меня" в своем веб-приложении. Я сделал это с помощью файла 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 истекает завтра, так что это не проблема
Спасибо заранее,
Damian
edit2: это очень странно, но, похоже, сейчас работает. Я продолжу проверять это и сообщу. Спасибо.