0
如何將自定義登錄令牌傳遞給io連接?如何將用戶的登錄令牌傳遞給socket.io?
所以基本上我以後有認證用戶,用戶將有令牌,但我怎麼傳遞令牌socket.io連接,並可能使用它。
下面的代碼 - 這是api.js
function ensureAuthenticated(req, res, next) {
// I skip alot of codes for clarity
var token = req.body.token || req.query.token || req.headers['x-access-token'];
if (token) {
req.user = user;
return next();
}
}
//Login
router.post('/login', function(req, res) {
// I skip the mongoose part for clarity
var token = createToken(user);
res.json({
success: true,
message: "Successfully login",
token: token
});
});
,而這是在server.js
io.on('connection', function(socket) {
socket.broadcast.emit('user joined', {
username: socket.username,
numUsers: numUsers
});
socket.on('typing', function() {
socket.broadcast.emit('typing', {
username: socket.username
});
});
socket.on('online', function() {
socket.emit('online');
});
socket.on('chat', function(msg) {
console.log("message: " + msg);
io.emit('chat', msg);
});
});
正如你可以看到,如果我要設置用戶名對象,我有要做username: socket.username
,要使用用戶名對象。
如果我這樣做用戶名:req.user,它會返回錯誤。我是否必須在io.on('connection')
中設置ensureAuthenticated
函數才能夠使用它?