2014-09-11 7 views
0

Я работаю с loopback 2.0 и socket.io 1.0.6.Использовать аутентификацию маркера для проверки подлинности socket.io

Я хотел бы использовать метод проверки петли обратной связи для аутентификации socket.io.

Я нашел способ аутентификации пользователей в loopback/lib/middleware/token.js. https://github.com/strongloop/loopback/blob/master/lib/middleware/token.js

Затем я пишу, как показано ниже.

var loopback = require('loopback'); 
var ioapp = module.exports = socketio; 

function socketio(server) { 
    var io = require('socket.io')(server); 

    // auth 
    io.use(function(socket, next) { 
    loopback.token()(socket.request, null, next); 
    }); 

    // listeners 
    ... 

    return io; 
}; 

Но на самом деле это не сработает и вызывает такую ​​ошибку.

/Users/.../project_root/node_modules/loopback/lib/models/access-token.js:201 
    id = req.param(params[i]); 
      ^
TypeError: Object #<IncomingMessage> has no method 'param' 
    at tokenIdForRequest (/Users/ksuzuki/Projects/appsocially/repo/chat-center/node_modules/loopback/lib/models/access-token.js:201:14) 
    at Function.AccessToken.findForRequest (/Users/ksuzuki/Projects/appsocially/repo/chat-center/node_modules/loopback/lib/models/access-token.js:123:12) 
    at /Users/ksuzuki/Projects/appsocially/repo/chat-center/node_modules/loopback/lib/middleware/token.js:53:16 
    at Array.0 (/Users/ksuzuki/Projects/appsocially/repo/chat-center/server/socket.js:15:28) 
    at run (/Users/ksuzuki/Projects/appsocially/repo/chat-center/node_modules/socket.io/lib/namespace.js:114:11) 
    at Namespace.run (/Users/ksuzuki/Projects/appsocially/repo/chat-center/node_modules/socket.io/lib/namespace.js:126:3) 
    at Namespace.add (/Users/ksuzuki/Projects/appsocially/repo/chat-center/node_modules/socket.io/lib/namespace.js:155:8) 
    at Client.connect (/Users/ksuzuki/Projects/appsocially/repo/chat-center/node_modules/socket.io/lib/client.js:67:20) 
    at Server.onconnection (/Users/ksuzuki/Projects/appsocially/repo/chat-center/node_modules/socket.io/lib/index.js:309:10) 
    at Server.EventEmitter.emit (events.js:95:17) 

Я думаю, это потому, что я прохожу неправильный тип объекта для loopback.token() метода. Как мне это сделать?

ответ

0

loopback.token - это экспресс-промежуточное программное обеспечение, и он ожидает, что первым аргументом будет экспресс-запрос.

 Смежные вопросы

  • Нет связанных вопросов^_^