我正在开发一个快速应用程序,我需要实现登录和注销。
我在登录期间使用以下代码创建了一个会话。
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)
}
})
})
答案 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,仅当用户有效时才包含值。