Я создаю карту листовок на сервере без root-доступа. Я хотел бы добавить службу WMS, защищенную базовой аутентификацией (имя пользователя и пароль). В буклете есть простой метод добавления сервисов WMS с помощью L.tileLayer.wms, но он не работает для защищенных сервисов WMS. Итак, есть ли способ пройти аутентификацию на сервере WMS, получить плитки WMS и проанализировать их в листовке? Добавление учетных данных для входа в URL-адрес WMS (например, https://username:[email protected]) у меня не работает.
Спасибо, Томас. Я тоже наткнулся на его, но как мне реализовать имя пользователя и пароль? Кажется, этот плагин работает для ключей аутентификации «из коробки».
При использовании базовой аутентификации вы передаете серверу имя пользователя и пароль в заголовке:
Authorization: Basic <credentials>
<credentials>
— это имя пользователя и пароль в кодировке Base64, соединенные одним двоеточием :
.
Вы можете использовать Leaflet-wms-header, чтобы передать собственный заголовок. К сожалению, у меня нет под рукой WMS-сервера с базовой аутентификацией для тестирования, но вот пример, основанный на примере листовки-wms-header:
// untested code
var wmsLayer = L.TileLayer.wmsHeader(
'https://GEOSERVER_PATH/geoserver/wms?',
{
layers: 'YOUR_LAYER',
format: 'image/png',
transparent: true,
},
[
{
header: 'Authorization',
value: `Basic ${btoa(username + ':' + password)}`
},
],
null
).addTo(map);
(btoa кодирует данную строку в строку в кодировке Base64.)
Большое спасибо за разработку Томаса, это работает сразу!
Вы можете использовать этот плагин: github.com/ticinum-aerospace/leaflet-wms-header.