PHP REST API Авторизация для Android

184
29 августа 2018, 22:20

Какие есть подходы для реализации авторизации на стороне PHP из Android приложения. Я не совсем понимаю серверную часть. Задача примерно следующая.

1) Пользователь вводит логин и пароль в Android приложении, уходит POST запрос на myApi.com/auth.php (тут проблем нет).

2) При верных данных как сохранить на сервере информацию о том, что User01 выполнил вход и что ему вернуть, что бы после перехода на следующий экран при запросе myApi.com/news.php сервер понял, что обращается к нему именно User01.

Вопрос как сделать это правильно? Какие есть подходы и стандарты. Подскажите направления и литературу.

Я верно понял, что могу сам генерировать "токен" и хранить его в БД. Но это каждый раз при обращении скажем к myApi.php передавать токен и искать в БД информацию об авторизации? Т.е. этот вариант не является оптимальным.

В общем, в процессе ответов я буду переформулировать и дополнять вопрос, т.к. на данный момент имею слабое представление об этом.

P.S. Я смотрю в сторону PHP фреймворков тоже, но мне нужен только REST функционал. От непонимания процесса авторизации не могу сделать выбор.

Answer 1

"Т.е. этот вариант не является оптимальным." - если смотреть с точки зрения пхп, то да, этот вариант не оптимален, но и не слишком затратен.

Происходит все примерно следующим образом:

  1. Введенные данные с приложения уходят к примеру на "myApi.com/auth.php"
  2. Сервер, проверяя введенные данные (к примеру логин и пароль) "генерирует токен"/"берет из базы уже сгенерированный токен" и отправляет его клиенту.
  3. Клиент теперь должен передавая любые запросы в след сбрасывать свой токен (если эти данные к примеру относятся к данному пользователю и больше ни к кому другому, на примере страницы с балансом пользователя)
  4. Сервер принимая запрос на получение данных о балансе не может идентифицировать пользователя, если нет токена, НО! Токен то вы присылаете, а значит данный токен и есть идентификация пользователя. Т.е. По токену можно найти кому он принадлежит (user_id) и уже затем выгребсти данные по балансу данного пользователя.

Не забывайте, что есть куча разных технологий хранения данных, и к примеру, "токен" => "user_id" можно хранить не в базе (постгрес, мускл, оракл), а к примеру в memcache (memcached), reddis или любом другом месте.

READ ALSO
Opencart 2.1 нету способа выбора доставки

Opencart 2.1 нету способа выбора доставки

Нужно добавить способы доставки в интернет магазине https://kalibritop/ при оформлении заказа

149
Достать часть строки из ссылки и вставить в часть другой ссылки

Достать часть строки из ссылки и вставить в часть другой ссылки

есть задача доставать выделенную жирным часть строки https://wwwyoutube

191
PHP 7.0 if else

PHP 7.0 if else

Почему при задании переменной $a значения больше 49 выводится не только квадрат значения этой переменной, но и "ошибка", которая описана в else?

185