Подтвердить что ты не робот

Как управлять сеансами с помощью AFNetworking?

Как следует из названия, я использую AFNetworking в проекте iOS, в котором приложение разговаривает с сервером. Когда пользователь заходит, сервер отвечает, отправив обратно флаг успеха, а заголовки ответов содержат идентификатор сеанса.

Мне интересно, будет ли AFNetworking автоматически отправлять идентификатор сеанса с каждым последующим запросом или я должен каким-то образом позаботиться об этом?

Для вашей информации у меня нет контроля над внутренним контентом с точки зрения аутентификации запросов. Я только строю клиент, который разговаривает с сервером.

4b9b3361

Ответ 1

Да, ваш идентификатор сеанса должен быть отправлен автоматически после входа в систему, если файл cookie не истекает до отправки следующего запроса (важная деталь, чтобы быть уверенным). NSURLConnection, который использует AFNetworking, заботится о деталях для этого для вас.

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

Как если бы вы хотели, чтобы служба отображалась не в журнале, вы можете просто удалить cookie сеанса, связанный с этим доменом. Некоторые службы, с которыми я работал, будут ошибочными, если вы уже вошли в систему и снова пытаетесь войти в систему. Кроме того, не было возможности проверить статус входа в систему. Быстрое исправление, извлеките файлы cookie из URL-адреса и удалите их:

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL: networkServerAddress];
for (NSHTTPCookie *cookie in cookies) 
{
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}

От самого разработчика

Ответ 2

Это зависит от спецификации, предоставляемой службой, с которой вы взаимодействуете. Я работал с подобными службами, и они явно заявили в своей документации, что: Чтобы поддерживать сеанс действительным, я должен опросить службу каждые несколько секунд, отправив int "1".

Однако, если возможно, пожалуйста, разместите имя службы или любую ссылку, которую мы можем прочитать. Если это какой-либо частный API компании, они должны были описать использование идентификатора сеанса, который они возвращают.


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

Сохранение файлов cookie в приложении iOS