【发布时间】:2016-03-24 14:43:19
【问题描述】:
我需要使用令牌身份验证来保护 Feathers 数据库适配器导出的服务。我们通过以下方式为 REST 做到了这一点:
var authenticate = jwt({
secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
audience: process.env.AUTH0_CLIENT_ID
});
为防止未经身份验证的客户端访问 REST 服务,我们这样做:
app.use('/api', authenticate);
对 websocket 的访问也应该被锁定。我找到了一些例子。下面的内容理论上应该启用 socket.io 的身份验证。
app.configure(feathers.socketio(function(io) {
io.on('connection', socketioJwt.authorize({
secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
audience: process.env.AUTH0_CLIENT_ID,
timeout: 5000 // 5 seconds to send the authentication message
})).on('authenticated', function(socket) {
// console.log('token: ' + socket.decoded_token.name);
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
}));
然而,这并没有发生。客户端socket.io请求没有token,但是服务端处理没问题。
我从哪里开始寻找?
【问题讨论】:
标签: javascript node.js socket.io auth0 feathersjs