节点JS - Passport注销无法正常工作

时间:2017-09-21 15:30:14

标签: javascript node.js passport.js

我目前正在学习节点,并且我正在尝试使用护照js编写成功的注销功能。到目前为止,我已经设法注册用户并将其登录。我已经在下面设置了一个Auth控制器,其中包含登录代码和工作以及似乎没有的注销代码:

const passport = require('passport');

exports.login = passport.authenticate('local',{
    failureFlash:'Failed Login!',
    successFlash:'Login successful!'
});

exports.logout = (req,res) => {
    req.logout();
    req.flash('Success','You are now logged out!')
};

以下是这两个功能的路由:

router.get('/logout',authController.logout);
router.post('/login',authController.login);

不确定它是否有所作为,但我建立前端并做出反应并使用Axios,它或多或少像Ajax一样连接到这些路由并将它们用作端点。我的理解是,当我点击/ logout路由时,护照js应该从请求中删除用户对象 - 这是正确的吗?目前它没有删除它。我也设置了MongoDB Compass,当我登录时可以在那里看到会话。我每次登录会话时都会更新,但在我退出时却没有。知道我哪里出错了吗?

1 个答案:

答案 0 :(得分:0)

/* Handle Logout */
router.get('/logout', function(req, res) {
    console.log("I am Logout")
    req.logout(); 
    res.json({ 
            status: "logout",
            msg:"Please Log In again"
         });
});

我和你一样有相同的配置。前端 - React和后端NodeJs。我使用Axios调用/注销路由。它对我来说很好。

export function LOGOUT(){
  return  dispatch => {

      axios.get("your url"+"/logout",{withCredentials: true})
        .then(function (response) {
          return dispatch({ type : "RESULT", payload : response.data } )

        })
        .catch(function (error) {
          return dispatch({ type : "ERROR", payload : error } )
        });

   }
}

试试这个。如果它不起作用。评论如下。