Аутентификация и отслеживание пользователей в веб-сервисе JSON - PullRequest
2 голосов
/ 18 ноября 2009

У меня есть приложение для управления контактами / CRM, используемое нашей компанией. Это веб-приложение, которое использует Ajax. Большая часть данных - это JSON, а внутренний сервер использует PHP с MySQL в качестве базы данных ...

Я хотел бы создать мини-версию Adobe Air, главным образом потому, что я могу использовать перетаскивание файлов, изменение размера изображений на стороне клиента, создание скриншотов на стороне клиента для загруженных файлов и т. Д. И т. Д.

Теперь, поскольку серверная часть является прославленным провайдером данных JSON, я полагаю, что могу адаптировать его для предоставления данных приложению AIR.

Моя проблема в том, как мне выполнить аутентификацию?
В PHP я использую сессии для аутентификации ...
Я полагаю, что для AIR это больше похоже на веб-сервис JSON, где вы вызываете определенный URL для доступа к определенным данным JSON.

После небольшого мозгового штурма я пришел к следующему:

  1. Пользователь входит в систему при запуске приложения AIR
  2. Сервер возвращает уникальный токен при успешном входе в систему и сохраняет этот токен в БД
  3. Приложение AIR должно добавлять этот токен к каждому запросу, которое оно отправляет на сервер
  4. При каждом запросе сервер проверяет действительность токена, сравнивая его с тем, который хранится в БД.

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

Если кто-то был в подобной ситуации, я надеюсь, что ваши ответы будут просветленными ...

спасибо

1 Ответ

4 голосов
/ 18 ноября 2009

Как насчет этого:

  1. просто возвращает идентификатор сеанса PHP в данных JSON в приложение AIR при аутентификации
  2. Ваше приложение AIR сохраняет идентификатор сеанса и использует его для запросов в этом сеансе
  3. когда ваш PHP получает запрос с идентификатором сеанса, установите для этого идентификатора сеанса:
  4. Ваш сеанс будет легко поддерживаться PHP, и вы сможете использовать $ _SESSION как обычно.

Когда вы получаете запрос с идентификатором сеанса, просто сделайте это:

if(isset($_GET['sess_id'])){
  session_id($_GET['sess_id']);
  // where $_GET['sess_id'] is where you put the Session ID stored in your AIR APP
}

Это может быть лучше, потому что отпадает необходимость поддерживать сеансы в базе данных.

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