CookieManager теряет куки при закрытии приложения?

Я работаю над приложением, которое общается с сервером и имеет экран входа в систему. Я использую httpconnection для связи с сервером (сервер отправляет ответ Json обратно). Мой экран входа в систему отправляет электронную почту и пароль, которые проверяются сервером - который отправляет cookie и ожидает cookie при каждом последующем запросе о том, что пользователь вошел в систему.

Я использую Cookiemanager и обработчик cookie, чтобы включить сеанс, чтобы пользователь мог войти только один раз.

Использование ниже 2 команд в моей основной деятельности (на метод Create)

CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);

Рабочая модель заключается в том, что моя основная деятельность - отправлять команду чтения на сервер, который проверяет, вошел ли пользователь в систему или нет (ожидает cookie с идентификатором внутри), и отправляет статус в формате json. Если статус равен 0, он переходит в режим входа в систему в противном случае на домашний экран.

В процессе входа в систему я отправляю команду входа в систему с именем пользователя и паролем, а сервер отправляет cookie-файл (отправляет уникальный идентификатор, который он перепроверяет при любом последующем запросе для подтверждения пользователя) обратно с ответом json.

После входа в систему я перехожу на домашний экран и читаю статус, и, поскольку я создал CookieManager в основном действии, он автоматически отправляет cookie с каждым httprequest.

Проблема в том, что - когда я выхожу из приложения и возвращаюсь после выполнения входа в систему... он снова начинается с основной активности и переходит на экран входа в систему вместо домашнего экрана. Я не могу понять, почему это так и как заставить моего пользователя войти в систему один раз, и после этого он сохраняет cookie, даже если он выходит из приложения.

Я думал CookieManager сохраняет cookie даже после вашего выхода. Это потому, что я создаю объект Cookie Manager в методе create, а когда приложение закрывается и перезапускается, оно снова создает новый объект? Или мое предположение неверно.

2 ответа

По умолчанию new CookieManager() будет хранить куки в памяти.

Однако вы можете использовать другой конструктор, чтобы изменить это поведение: CookieManager(CookieStore store, CookiePolicy cookiePolicy),

Есть хотя бы пара стойких java.net.CookieStore реализации:

If I move the Cookiemanager to the application class, it's just get called once and solve this issue. 

public class application extends Application {
    private static Context context;
    @Override
    public void onCreate() {
        super.onCreate();
            CookieManager cookieManager = new CookieManager();
            CookieHandler.setDefault(cookieManager);
    }

    public static Context getContext() {
        return application.context;
    }
Другие вопросы по тегам