使用nodeJS而没有会话存储的会话管理

时间:2016-12-05 23:16:45

标签: node.js session session-management

我对MEAN堆栈开发相当新。我开发了一个网站作为一个项目,我只使用node,express,angular和mongo。我已经登录,注册和注销Web服务调用以完美地工作,但是很难管理会话。

当用户刷新页面时,他会被注销。这是我使用session的server.js代码 app.use(bodyParser.urlencoded({ extended: true })); app.use(cookieParser()); app.use(session({resave: true, saveUninitialized: true, secret: 'secret',cookie: { maxAge: 60000 }}));

并且在登录时,如果登录成功,我还会执行以下代码。

router.get('/success', function(req, res){
    req.session.cookie.lastLogin = new Date().getTime();
    req.session.name = req.user.name;
    req.session.username = req.user.email;
    res.send({status: 200,state: 'success', user: req.user ? req.user : null});
});

响应包含所有详细信息,例如用户信息,如果我传递'req'中的会话对象,也会返回准确的信息。

注销时,我执行以下代码:

router.get('/logout', function(req, res) {
    req.session.destroy();
    req.logout();
    console.log("user logged out.log out called and session.destroy() called.");
    res.redirect('/');
});

我遇到的问题是确保并确认在页面刷新和导航到其他页面后是否仍然登录使用。 对此事的任何帮助都会很棒!对不起,如果这是现有问题的重复。我一直在打破我的头脑,我认为我接近解决方案,但不能微调它。

编辑: 我还写了一个api来保持会话活着。

router.post('/keepSessionAlive', function(req, res){
    if(typeof req.cookies['connect.sid'] != 'undefined') {
        console.log(req.cookies['connect.sid']+":: user is :"+req.session.username);
        res.send({status: 200,state: 'success', user: req.session ? req.session : null});
    }else{
        req.logout();
        console.log("user logged out. aaw not alive");
        res.send({status: 500,state: 'failure', message:"something went wrong. For" +req});
    }
});

0 个答案:

没有答案