Размещение векторных плиток из облачного хранилища Firebase - PullRequest
0 голосов
/ 12 июля 2020

Я размещаю векторные плитки, которые используются моим javascript веб-приложением с помощью mapboxGL.

MapboxGL запрашивает эти плитки из корзины очень специфичным c способом. При создании экземпляра карты вы указываете URL-адрес своего сегмента, например:

addLayer({
        source: {
          type: "vector",
          tiles: [
            `https://storage.googleapis.com/${bucketName}/{z}/{x}/{y}.pbf`,
          ],
          minZoom: 4,
          maxZoom: 12,
        }
    })

И карта запрашивает правильные фрагменты в зависимости от области просмотра. Вы можете преобразовать запрос и добавить Authorization: Bearer {{tokens}} к каждому запросу для плитки, добавив следующее свойство:

transformRequest: (url, resourceType) => {
        if (url.startsWith(settings.VECTOR_TILE_BUCKET_URL)) {
          return {
            url: url,
            headers: {
              Authorization: `Bearer ${accessToken}`,
              'Cache-Control': 'no-cache'
            }
          };
        }
      }

Теперь вот мой вопрос для тех, кто знаком с firebase. При установке «правил» в моем сегменте облачного хранилища могу ли я разрешить доступ для чтения всем пользователям в учетной записи, а затем передать токен firebase, который пользователь получает как Bearer {{token}} в этих запросах плитки? Есть ли другой способ защитить свои векторные плитки с помощью служб firebase, о которых я не думаю? Я прочитал документацию, в которой показано, как получить доступ к корзине облачного хранилища с помощью firebase SDK, но неясно, могу ли я также выполнить авторизацию в их корзине, передав токен в более традиционном формате в качестве параметра запроса.

1 Ответ

0 голосов
/ 17 июля 2020

В официальной документации по аутентификации облачного хранилища вы можете увидеть множество методов аутентификации (с помощью gsutil, клиентской библиотеки, Api), но поскольку вы используете Firebase, Firebase SDK поставляется с аутентификацией Firebase. встроено, поэтому Firebase SDK - единственный способ получить доступ к корзине, например, SDK обрабатывает все операции, связанные с аутентификацией, и использование других методов может подвергнуть ваши приложения риску.

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

...