После обширных исследований я не смог найти четкого ответа на мой вопрос. Во-первых, может ли кто-нибудь сказать мне основную логику обработки "функций входа в систему" для родного приложения iphone, подключающегося к веб-службе? Например, приложение facebook запрашивает имя пользователя и пароль сразу после запуска, а оттуда у вас есть полный доступ к вашей учетной записи во всех последовательных представлениях приложения. Каждый раз, когда вы публикуете что-то и т.д., Вам не нужно повторно регистрироваться... Может ли кто-нибудь объяснить мне этот процесс? Это делается через файлы cookie или сеансы? вовлечен ли Брелок?
У меня сейчас работает полурабочее приложение, но я почти уверен, что могу сделать это лучше и безопаснее. Вот что я делаю:
1) Настройте локальный сервер с базой данных пользователей (столбцы имени пользователя и пароля и другие таблицы и т.д.) с помощью mysql. Написал простой веб-сервис, который принимает данные POST и запрашивает базу данных, чтобы проверить, что имя пользователя существует... и если да, то пароли равны. Использование хэширования sha1. Echo true или false соответственно.
2) Мое приложение имеет начальный экран входа с двумя текстовыми полями (1 для имени пользователя и 1 для пароля) и кнопкой, вызывающей метод входа. Мой метод входа в систему выполняет следующие действия:
- init a * NSURL со строкой (URL-адрес моей веб-службы: @ "http://webservice.com/login.php" )
- init a * ASIFormDataRequst с этим URL
- установите значение post с текстом пароля и электронной почты в текстовых полях
- установите делегат для себя
- вызов startAsycronous по запросу
- реализовал метод requestFininshed для извлечения "истинного" или "ложного" эха из веб-службы
- в зависимости от ответа, перейдите к следующему представлению, иначе сделайте предупреждение, чтобы пользователь повторил
Итак, мои вопросы:
1) Безопасно ли это для отправки паролей? (через ASIHTTPRequest и метод POST?) 2) В последующих представлениях пользователь должен иметь возможность взаимодействовать со своей учетной записью (например, отправлять сообщения и статус и фотографии на Facebook). Как я сохраняю статус пользователя, зарегистрированного в журнале, так что каждый раз, когда пользователь взаимодействует с базой данных, я может гарантировать, что пользователь все еще зарегистрирован и что он тот же пользователь? Например, единственный способ, которым я могу это сделать, - хранить файлы cookie на пользовательском устройстве с именем пользователя и паролем, а затем каждое последующее взаимодействие с веб-службой/базой данных, он выполняет аутентификацию с значениями cookie (имя пользователя и пароль).
Должен быть лучший способ сделать это? Может быть, сеансы или куки? или с помощью keychain??
Спасибо за помощь, ребята, и извините за длинный вопрос!