2

私はsocket.ioのauthorizeメソッド(詳細はこちら)を使用して、ユーザーに関連付けられたCookieをチェックすることにより、ユーザーがアプリの使用を許可されているかどうかを確認しています。

上記のブログ投稿はかなり単純ですが、私はcookieSessionsを使用してセッションデータをcookieに保存しています。良い質問の1つは、stackoverflowに関するものですが、それを理解することはできません。

cookieSessionデータを復号化してセッションデータにアクセスする方法を知りたい。私のサンプルコードのビット:

io.set('authorization', function (data, accept) {

//Check cookie for session data

accept(null, true);});

つまり、socket.ioのcookieSessionにアクセスするにはどうすればよいですか?

4

1 に答える 1

2

私は以下を使用します(パスポートを使用しますが、それは問題ではありません):

io.set('authorization', function(data, accept) {
    var getCookieSession = require('./lib/cookie_session');
    var session = getCookieSession(data.headers, {
        key: 'YOUR KEY',
        secret: 'YOUR SECRET'
    });

    if (session.passport.user) {
        accept(null, true);
    } else {
        accept(null, false);
    }
});

getCookieSessionは次のモジュールです。

var connect = require('connect');

var cookieParser = connect.cookieParser;
var cookieSession = connect.cookieSession;

module.exports = function(headers, opts) {
    var key = opts.key || '_session';
    var secret = opts.secret || '';
    var req = { headers: headers, originalUrl: "/" };
    var res = { on: function() {} };
    var next = function () {};

    cookieParser(secret)(req, res, next);
    cookieSession({ key: key })(req, res, next);

    return req.session;
};
于 2013-01-17T14:15:08.707 に答える