Я размещаю векторные плитки, которые используются моим 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, но неясно, могу ли я также выполнить авторизацию в их корзине, передав токен в более традиционном формате в качестве параметра запроса.