Я работаю с системой обмена сообщениями faye, и я хочу добавить аутентификацию! Я проделал свой путь через веб-сайт и следил за учебником.аутентификация faye с токеном
На клиенте у меня есть расширение для исходящих сообщений:
var droneFaye = new faye.Client("/faye", {
timeout: 120
});
var USER_TOKEN = 'ifd63cylqwsyaq9c2ptzywjujgtfpxs';
droneFaye.addExtension({
outgoing: function(message, callback) {
if (message.channel !== '/meta/subscribe')
return callback(message);
message.ext = message.ext || {};
message.ext.token = USER_TOKEN;
console.log(message);
callback(message);
}
});
На сервере:
var token = 'ifd63cylqwsyaq9c2ptzywjujgtfpxs'
var serverAuth = {
incoming: function(message, callback) {
// Let non-subscribe messages through
if (message.channel !== '/meta/subscribe')
return callback(message);
// Get subscribed channel and auth token
var msgToken = message.ext && message.ext.token;
// Find the right token for the channel
if (token !== msgToken) {
message.error = 'Invalid subscription auth token';
}
console.log(message);
callback(message);
}
};
var adapter = new faye.NodeAdapter({
mount:'/faye',
timeout:45
});
adapter.addExtension(serverAuth);
adapter.attach(httpServer);
У меня есть подписка на сервере, как это:
adapter.getClient().subscribe("/drone/move", function(cmd) {});
Хорошо! Поэтому, когда я запустить сервер и никаких КЛИЕНТ это уже вызывает расширение для подписки и будет выводить на консоль:
{ channel: '/meta/subscribe',
clientId: '2isdeb0ds77zl0lh82ob1kqu29y1cajnv80',
subscription: '/drone/move',
id: '2',
error: 'Invalid subscription auth token' }
После того, как клиент подключается к серверу, он будет снова вызвать расширение, и это будет выведите это:
{ channel: '/meta/subscribe',
clientId: '3kechs0c7smpc05z5o7d0a8qcd301d8zi41',
subscription: '/drone/move',
id: '3',
ext: { userId: 18787, token: 'ifd63cylqwsyaq9c2ptzywjujgtfpxs' } }
Так что это выглядит хорошо! Но никакие другие сообщения не появятся на сервере, хотя у них есть правильный токен, и нет сообщения об ошибке!
Просто для информации. Если вы добавите ключ ошибки со значением в объект сообщения, он не будет передавать сообщение в свою подписку ... его должно быть так! ..
Также, когда я комментирую message.error в расширении он работает нормально, но, конечно, аутентификации нет.
Так кто-нибудь знает, почему сервер вызывает расширение, даже если нет клиента, а во-вторых, почему faye не передает сообщение своей подписке, даже если в объекте сообщения нет ошибки?
thx!