Как сделать авторизацию через Firebase на многостраничном сайте?

Здравствуйте.

Делаю небольшой сайт на html/php/js.
Главный нюанс - страницы сайта должны быть доступны только тем пользователям, кто авторизовался по номеру телефона.

Готовые и удобные решения (для начинающего разработчика вроде меня) через сервисы по смс выходят дорого. Авторизация по звонку дешевле, но также стоит денег. Нашел вполне подходящее решение - авторизация по смс через Google Firebase. Бесплатного лимита мне более чем достаточно.

В репозитории Firebase https://github.com/firebase/firebaseui-web взял пример реализации. Там же есть пример отслеживания, авторизован пользователь на сайте или нет.

Все бы хорошо, но примеры на на странице Firebase приведены на JS.
Подскажите, как на JS сделать авторизацию на многостраничном сайте? Если я правильно понял возможности JS реализации, то сам процесс отслеживания авторизации на JS не сделать, иначе признак авторизации так или иначе будет передаваться либо в куках, либо в параметрах get/post запроса. Т.е. после выполнения JS скрипта из примера Firebase я вижу сотовый номер пользователя, токен и некоторую др. информацию. Но как исходя из этих сведений закрыть доступ к странице - не могу сообразить.

Начал искать пути реализации данного кода на php.
- Неплохой вроде вариант, передавать переменную о статусе авторизации из JS в PHP. Но опять же переменная будет передаваться в доступном виде и ее легко подменить.
- Нашел библиотеку JWT (в т.ч. для php), которая позволяет проверять статус по токену. Этот вариант вроде как вообще идеален. Но сложность в том, что установка библиотеки осуществляется через composer, а у меня простой хостинг и нет поддержки ssh. Может быть есть какие-то конкретные php файлы, которые я могу скопировать из репозиториев разработчиков JWT решений (но там столько файлов, что непонятно, какие именно файлы мне нужны для работы данной библиотеки и как их корректно подключить)?

Еще как вариант, что мне удалось найти, закрытие доступа к страницам сайта через htaccess. Т.е. сделать открытой страницу с авторизацией, а прочие запаролить. И если авторизация корректная, то давать пользователю доступ к другим страницам. Но тут не понимаю, возможно ли вообще так. Ведь пароль пишется фиксированный и как добавлять пользователей в писок исключений в этом случае вообще не понимаю.

Буду признателен за любую помощь и подсказки по данному вопросу.
  • Вопрос задан
  • 1581 просмотр
Пригласить эксперта
Ответы на вопрос 1
@max2021 Автор вопроса
Пока писал пост пришла еще одна идея - может быть она более жизнеспособная?

1. При успешной авторизации средствами JS записывать токен в cookie #1.
2. При открытии какой-либо иной страницы сайта выполнять код JS (из примера Firebase) для проверки статуса авторизации и результат токена записывать в cookie #2.
3. Из скрипта php сопоставлять эти два токена и если они совпадают, подгружать нужную страницу из php.

Правда, в этом решение также для меня не очевидно, как правильно реализовать сопоставление этих двух токенов, чтобы их нельзя было подложить. Т.е. пользователь запишет произвольные значения в куку #1, запишет аналогичное значение в куку #2, а скрипт php просто сопоставит их, даже не заподозрив подвоха.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы