最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

将Websocket与Passport一起使用

IT培训 admin 6浏览 0评论

将Websocket与Passport一起使用

当有人打开WebSocket连接时,如何访问当前会话的护照登录?

我发现了一个很好的项目express-ws似乎工作得很漂亮

app.ws('/', function(ws, req) {
    ws.on('message', function(msg) {
        console.log('express-ws --- ', msg);
    });
    console.log('socket', req.user); //current user == req.user
});

但是,如何通过简单的Websocket连接获取相同的信息呢?

var WebSocketServer = require('ws').Server,
    wss = new WebSocketServer({ port: 3001 });

wss.on('connection', function(socket){
    //Where is the current user????
    console.log('connection');

    socket.on('message', function(message){
        console.log('message received', message);
    });
});

(这第二个连接工作得很好 - 但我不能为我的生活找到任何方法从Passport获取登录信息)

回答如下:

在创建WS服务器时,请按如下所示添加“verifyClient”参数以获取会话信息:

  const wss = new (require('ws').Server)({
    server,
    verifyClient: (info, done) => {
      sessionParser(info.req, {}, () => {
        done(info.req.session)
      })
    }
  })

其中sessionParser是你的express-session配置对象。然后,您可以通过req.session在websocket中访问它。如果您使用护照,您可能需要req.session.passport.user ..

将Websocket与Passport一起使用

当有人打开WebSocket连接时,如何访问当前会话的护照登录?

我发现了一个很好的项目express-ws似乎工作得很漂亮

app.ws('/', function(ws, req) {
    ws.on('message', function(msg) {
        console.log('express-ws --- ', msg);
    });
    console.log('socket', req.user); //current user == req.user
});

但是,如何通过简单的Websocket连接获取相同的信息呢?

var WebSocketServer = require('ws').Server,
    wss = new WebSocketServer({ port: 3001 });

wss.on('connection', function(socket){
    //Where is the current user????
    console.log('connection');

    socket.on('message', function(message){
        console.log('message received', message);
    });
});

(这第二个连接工作得很好 - 但我不能为我的生活找到任何方法从Passport获取登录信息)

回答如下:

在创建WS服务器时,请按如下所示添加“verifyClient”参数以获取会话信息:

  const wss = new (require('ws').Server)({
    server,
    verifyClient: (info, done) => {
      sessionParser(info.req, {}, () => {
        done(info.req.session)
      })
    }
  })

其中sessionParser是你的express-session配置对象。然后,您可以通过req.session在websocket中访问它。如果您使用护照,您可能需要req.session.passport.user ..

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论