2017-12-18 182 views
-1

我正在开发一个快速应用程序,我需要实现登录和注销。注销不清除会话,session.destroy不起作用

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

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

我正在使用快速会话 –

+0

您能详细说明当您说“无法清除会话”时,您的意思吗?你的意思是它没有清除服务器上的会话? –

回答

1

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

的问题是在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,只包含用户是否是有效的值。