Как реализовать схему входа в систему только для мобильного веб-приложения, реализованного с помощью jQuery Mobile, PhoneGap и Django?

Я участвую в ранних (предварительных) этапах разработки мобильного веб-приложения, используя jQuery Mobile (мы посмотрели Sencha Touch в течение нескольких недель, но jQuery Mobile лучше подходит для наших командных компетенций). Я обернуваю веб-приложение jQuery Mobile PhoneGap, чтобы создать приложение для iPhone, iPod touch и iPad. Я использую Django для наших веб-приложений, поэтому намереваюсь сделать то же самое здесь для серверной части, с каким-то потоком данных JSON/Ajax/REST для интерфейса между мобильным приложением и сервером. Поскольку это приложение для мобильных устройств, мы должны иметь доступ ко всем HTML5.

Хотя я, вероятно, придумаю другие вопросы/вопросы для этой реализации, вот мой текущий вопрос/вопрос:

Мне нужно настроить приложение, чтобы при первом открытии приложения пользователь должен ввести имя пользователя и пароль для аутентификации. Впоследствии пользователь не должен аутентифицироваться, если пользователь не нажмет ссылку "Настройки", которая дает им страницу для аутентификации с другой учетной записью или паролем. Приложение должно все же аутентифицироваться на сервере каждый раз, когда оно запускается, используя текущее имя пользователя и пароль, которые были изначально введены, чтобы убедиться, что учетная запись не была отключена или пароль был изменен или что-то еще.

Я новичок в схемах аутентификации. Что мне делать?

Ответы

Ответ 2

Хотя вы не собираетесь с Sencha Touch, есть довольно хороший обзор проблем на HTTP Authentication.

Как для хранения информации аутентификации после первоначального входа в систему, вы можете попробовать локальное хранилище или файл cookie (хотя вам может потребоваться использовать PhoneGap, чтобы включить хранилище файлов cookie). HTML5 также предоставляет локальное клиентское хранилище для ключей. Если cookie проверки подлинности работает, я считаю, что это может быть автоматически обработано для вас; в противном случае вы могли бы реализовать проверку проверки document.ready в рамках Ajax-вызова с использованием данных аутентификации из локального хранилища (или зашифрованное хранилище).

Ответ 3

Решение KeyChain будет работать только на устройствах iOS, поэтому, если это ваша единственная цель, вы в порядке.

Но как насчет других? Вид отходов с помощью PhoneGap, но затем развертывание только в одной инфраструктуре...

Я знаю, что localStorage не безопасен, но если вы знаете об ограничениях, есть способы сделать немного менее "очевидным".

Здесь jQuery.handleStorage плагин, который также обрабатывает шифрование AES... Вы могли бы взглянуть на источник и реализовать только те части, которые вы (если вы не хотите использовать весь плагин, который также поддерживает настольные браузеры!).

PS: Я никоим образом не связан с этим плагином или автором

Ответ 4

Это был один из самых острых вопросов, которые я имел, когда начал мобильную разработку с помощью PhoneGap. Позвольте мне объяснить, что я делаю, чтобы пройти.

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

Теперь для будущей коммуникации используйте токен, токен будет передаваться с каждым вызовом веб-службы на стороне сервера, где сервер будет аутентифицировать, является ли токен допустимым маркером, выпущенным сервером. Вы можете аннулировать токен каждые 72 часа или 48 часов в качестве предварительного требования (или не истечения срока действия). Как только токен окажется недействительным, вам нужно будет войти в систему и получить новый токен.

Надеюсь, это решит вашу проблему.

Ответ 6

В нем говорится о включении файла PHP в файл HTML, но я не уверен, работает ли PhoneGap с PHP. Я только начал использовать PhoneGap в эти выходные.