Cookie не читается - PullRequest
       3

Cookie не читается

2 голосов
/ 02 мая 2011

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

Ответы [ 2 ]

3 голосов
/ 18 июля 2011

Я обнаружил, почему иногда печенье не читается.Это связано с атрибутом пути.

Если у кого-то возникла эта проблема, задайте путь к cookie, например, так:

Cookie c = new Cookie("name", "value");
cookie.setMaxAge(86400);
cookie.setPath("/");

С уважением

0 голосов
/ 02 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...