Как можно использовать как открытые, так и частные конечные точки, используя admin sdk? - PullRequest
0 голосов
/ 02 мая 2018

Я размещаю экспресс-приложение на Firebase Hosting с бэкэндом Cloud Functions. Мое приложение переднего плана отправляет токен к внутреннему коду (экспресс-приложение) для проверки пользователя. Мне нужны как публичные, так и частные конечные точки API. Я вижу, что есть пример кода (промежуточное ПО для проверки токена идентификатора Firebase) для защиты конечных точек API с помощью администратора SDK. Ссылка на код: https://github.com/firebase/functions-samples/blob/master/authorized-https-endpoint/functions/index.js

Конечная точка в коде доступна только аутентифицированному пользователю, но как мне также иметь конечные точки для не аутентифицированного пользователя (публичные конечные точки)?

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Основной ответ заключается в том, чтобы просто «публичные» конечные точки не использовали промежуточное программное обеспечение проверки. Есть несколько способов сделать это.

  1. Разделите экспресс-приложение на два раздела: «публичный» и «приватный». Раздел «private» должен включать промежуточное ПО, а «public» - нет.
  2. Иметь две конечные точки HTTPS: «открытая» и «закрытая»; каждое из них имеет свое собственное экспресс-приложение.
  3. Использовать промежуточное программное обеспечение для проверки на конечной точке для каждой конечной точки (т. Е. api/user/userid1/change-name будет использовать промежуточное программное обеспечение, а api/about - нет).

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

0 голосов
/ 02 мая 2018

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

Если вам действительно нужны две разные конечные точки, это нормально. Настройте свое экспресс-приложение для приема запросов в двух разных местах и ​​настройте их так, чтобы они по-разному вели себя по мере необходимости.

...