JWT аутентификация с помощью gundb
Могу ли я использовать аутентификацию JWT с gundb? И если так, это сильно замедлит мою скорость синхронизации? Я собирался попытаться реализовать тест с использованием данного руководства, но хотел посмотреть, есть ли какие-то "ошибки", о которых я должен знать.
1 ответ
API был изменен для использования системы промежуточного программного обеспечения. Платформа SEA (Безопасность, Шифрование, Авторизация) будет опубликована для обработки подобных вещей. Тем не менее, вы можете свернуть свой собственный, выполнив что-то вроде этого на сервере:
Gun.on('opt', function(ctx){
if(ctx.once){ return }
ctx.on('in', function(msg){
var to = this.to;
// process message.
to.next(msg); // pass to next middleware
});
});
Регистрация in
слушатель через opt
Hook позволяет этому промежуточному программному обеспечению становиться 1-ым в линии (даже перед ядром пистолета), таким образом, вы можете фильтровать все входы и отклонять их при необходимости (не вызывая to.next(msg)
).
Аналогично, добавьте заголовки на клиенте, который вы хотите зарегистрировать out
слушатель (так же, как мы сделали для in
) и измените исходящее сообщение, чтобы msg.headers = {token: data}
а затем передать его следующим слоям промежуточного программного обеспечения (которые, вероятно, будут перехватчиками веб-сокетов / транспорта), выполнив to.next(msg)
также. Больше документов, чтобы прийти на это, поскольку это стабилизируется.
Старый ответ:
Очень поздний ответ, извините, это не было решено раньше:
Адаптер websocket / ajax по умолчанию позволяет обновлять headers
свойство, которое передается в каждом сетевом сообщении:
gun.opt({
headers: { token: JWT },
});
Затем на сервере вы можете перехватывать и отклонять / авторизовать запросы на основе токена:
gun.wsp(server, function(req, res, next){
if('get' === req.method){
return next(req, res);
}
if('put' === req.method){
return res({body: {err: "Permission denied!"}});
}
});
Приведенный выше пример отклоняет все записи и разрешает все чтения, но вы бы заменили эту логику своими собственными правилами.