2011-12-15 5 views
0

を終了することができない。私はsocket.ioを使用して、次のコードを発現し、有していセッション

io.set('authorization', function (data, accept) { 
if (data.headers.cookie) { 
    data.cookie = parseCookie(data.headers.cookie); 
    data.sessionID = data.cookie['express.sid']; 
    data.sessionStore = session; 
    session.get(data.sessionID, function (err, session) { 
     if (err || !session) { 
      accept('Error', false); 
     } else { 
      data.session = new msession(data, session); 
      accept(null, true); 
     } 
    }); 
} else { 
    return accept('No cookie transmitted.', false); 
} 

})。

セッションはグローバル変数です。

問題は、ログアウトページが呼び出されたときにsession.destroy()を呼び出してセッションを終了しようとしていますが、終了していません。私は何か追加が必要ですか?

+0

このセッションのグローバル変数は、Expressのものですか? – alessioalex

+0

いいえ、私は自分自身を追加しました。
var MemoryStore = express.session.MemoryStore;
セッション=新しいMemoryStore(); – firebird

答えて

0

session.destroy(sid, [optional callback function]);ここで、sidはセッションIDです。メモリストアのコードを次に示します。

https://github.com/senchalabs/connect/blob/master/lib/middleware/session/memory.js#L79-92

+0

私はそれを試みました、それは動作しませんでした。 socket.on( 'logout'、function(){ console.log( 'ログアウト:' + socket.handshake.sessionID); session.destroy(socket.handshake.sessionID); }); クッキーなどをクリアする必要がありますか? – firebird

+0

はsocket.handshake.sessionStore.destroy(socket.handshake.sessionID)を試しましたが、それもうまくいきませんでした。私はここで説明しているsocket.io + expressのセッションメソッドを使用しています:http://www.danielbaulig.de/socket-ioexpress/ – firebird

+0

'socket()の代わりに' sessionStore.destroy(socket.handshake.sessionID) 'を試してみてください。 .handshake.sessionStore.destroy(socket.handshake.sessionID) 'を実行します。 – alessioalex

関連する問題