2017-12-18 184 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,只包含用戶是否是有效的值。