节点JS – Express,Socket.io会在用户注销时完成会话销毁

会话variables是在用户login系统时创build的。 然后我在我的授权码中加载会话variables。 我想在用户注销时销毁该variables。 这是一些简化的代码

store = new express.session.MemoryStore(); var parseCookie = express.cookieParser('secret'); app.use(parseCookie); app.use(express.session({store: store, key:'sid'})); app.post('/login', function(req,res){ var post = req.body; if (post.user == 'hugo' && post.password == '123') { req.session.user_name = post.user; res.redirect('/mypage'); } else res.send('wrong user or pass'); }); io.set('authorization', function (data, callback) { parseCookie(data, {}, function(prserr) { var sess = (data.secureCookies && data.secureCookies['sid']); store.load(sess, function(err, session){ if (err || !session ) { callback('not logged in', false); } else { data.session = session; // save session callback(null, true); } }); }); }); 

最后

  app.get('/logout', function (req, res) { req.session.destroy(); /* Here I want to destroy session variable that is declared in authorization code (see above: data.session = session )*/ res.redirect('/'); }); 

当通过req.session.destroy()销毁会话时,variablessocket.handshake.session.user_name仍然存在。 我也想摧毁它。 但是我不知道如何在上面提到的地方访问所需的variables(在注销代码中)。

你有没有考虑过使用护照 ? 它可能比试图推出自己的authentication解决scheme更快(也更有效)。