注销不会清除会话,session.destroy不起作用

时间:2017-12-18 10:40:29

标签: javascript node.js express-session

我正在开发一个快速应用程序,我需要实现登录和注销。

我在登录期间使用以下代码创建了一个会话。

req.session.login_id = rows[0][0]["login_id"];
req.session.save(function(err) {
  if(err){
    console.log('Error in creating session.')
  }
  else  {
    res.redirect('/profile')
  }
})

但以下内容无法清除会话:

router.get('/logout',(req,res,next)=>{
  req.session.destroy(function (err) {
    if (!err){
      res.redirect('/')
    }else{
      return next(err)
    }
  })
})

1 个答案:

答案 0 :(得分:3)

我找到了问题的答案......

问题出在MySql查询中,用于登录的临时变量(@login_id)未初始化并用于包含垃圾值。

原始查询是

SELECT login_id into @login_id from tbl_login WHERE email=in_email AND password=in_password AND status='active';

我把它改成了

SET @login_id = NULL; SELECT login_id into @login_id from tbl_login WHERE email=in_email AND password=in_password AND status='yes';

现在@login_id默认为NULL,仅当用户有效时才包含值。