session 变量是在用户登录系统时创建的。然后我在授权代码中加载 session 变量。我想在用户注销时销毁该变量。这是一些简化的代码
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()
变量销毁 session 时
socket.handshake.session.user_name
仍然存在。我也想毁掉它。但我不知道如何在上述位置(在注销代码中)访问所需的变量。
最佳答案
您是否考虑过使用 Passport ?它可能比尝试推出自己的身份验证解决方案更快(也更高效)。
关于node.js - Node JS - Express、Socket.io 在用户注销时完成 session 销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21391631/