小编Rob*_*lpe的帖子

socket.io解析connect(> = 2.4.1)签名的会话cookie

使用最新版本的connect(截至2012-07-26),我发现以下方法可以从socket.io获取可与connect-redis存储一起使用的会话ID.

var express = require('express')
, routes = require('./routes')
, fs = require('fs')
, http = require('http')
, io = require('socket.io')
, redis = require('connect-redis')
, connect = require('express/node_modules/connect')
, parseSignedCookie = connect.utils.parseSignedCookie
, cookie = require('express/node_modules/cookie');

var secret = '...';
var rStore = new(require('connect-redis')(express));

//...

var server = http.createServer(app);
var sio = io.listen(server);

sio.set('authorization', function(data, accept) {
    if(data.headers.cookie) {
        data.cookie = cookie.parse(data.headers.cookie);
        data.sessionID = parseSignedCookie(data.cookie['connect.sid'], secret);
    } else {
        return accept('No cookie transmitted', false);
    }
    accept(null, true);
});
Run Code Online (Sandbox Code Playgroud)

data.sessionID …

javascript connect node.js express socket.io

12
推荐指数
1
解决办法
4155
查看次数

标签 统计

connect ×1

express ×1

javascript ×1

node.js ×1

socket.io ×1