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 с датой истечения срока действия. Если вы этого не сделаете, он будет длиться столько же, сколько и сеанс браузера.

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