Два варианта авторизации мобильного приложения на сайте через Ajax-запросы — ваше мнение?
Итак, имеется мобильное приложение (PhoneGap + Framework7), взаимодействующее с сайтом на PHP посредством AJAX-запросов. В приложении есть разделы требующие авторизованного доступа. Желательно, чтобы после аунтификации приложение не спрашивало у пользователя логин и пароль в течении 6 месяцев.
Хочу использовать token'ы, но только по своему. Есть две идеи:
1) После аунтификации приложение в ответ получает token, сохраняет его в localStorage и затем для всех своих AJAX-запросов к серверу добавляет значение этого token в HTTP-заголовок: Authorization. На стороне сайта происходит сверка/валидация token'а, и если Ajax-запрос требует авторизации, то перед его выполнение происходит авторизация по этому token'у
2) После аунтификации приложение в ответ получает token и PHPSESSID и сохраняет их в localStorage и затем для всех своих AJAX-запросов к серверу добавляет значения этих: token и PHPSESSID в HTTP-заголовок: Authorization. На стороне сайта происходит проверка существования/активности PHP-сессии с id =PHPSESSID, если такая сессия есть, то в $_COOKIE['PHPSESSID'] записывается значение PHPSESSID - тем самым мы подключаем запрос к PHP-сессии, если же такой сессии нет, то происходит аунтификация/авторизация через token, берется id текущей (новой) сессии пользователя и в ответе через какой-нибудь HTTP-заголовок передается PHPSESSID. Мобильное приложение обновляет значение PHPSESSID в localStorage для использования в последующих Ajax-запросах.
Какой вариант выбрали бы Вы и почему?
Может предложите какой-нибудь третий вариант?
Может я что-то не понимаю, но зачем Authorization? Мне казалось, он нужен для другого. Чем хуже хранить токен в куках, а на сервере доставать токен оттуда?
Я раньше делал как в первом варианте, сохранял данные в LocalStorage и после этого в каждом запросе отправлял эти данные на сервер.
На странице где нужна авторизация, стоит скрипт которые обращается к базе данных и сверяет пользователя, если таковой есть и у него достаточно прав для просмотра документа, ему показывается контент.