【问题标题】:Node JS - Passport logout not workingNode JS - 护照注销不起作用
【发布时间】:2018-03-03 00:54:49
【问题描述】:

我目前正在学习节点,我正在尝试使用护照 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);

不确定它是否会有所不同,但我正在使用 React 构建前端,并使用 Axios,它或多或少类似于 Ajax 来连接到这些路由并将它们用作端点。我的理解是,当我点击 /logout 路由护照 js 应该从请求中删除用户对象 - 这是正确的吗?目前它没有删除它。我还设置了 MongoDB Compass,登录时可以看到其中的会话。每次我登录会话时间都会更新,但当我注销时不会。知道我哪里出错了吗?

【问题讨论】:

    标签: javascript node.js passport.js


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

    我的配置和你一样。前端 - 反应和后端 NodeJ。我使用 Axios 调用 /logout 路由。对我来说效果很好。

    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 } )
            });
    
       }
    }
    

    试试这个。如果它不起作用。在下面发表评论。

    【讨论】:

      猜你喜欢
      • 2019-02-24
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      • 2020-09-03
      • 2018-06-07
      • 2019-08-07
      • 1970-01-01
      • 2018-12-07
      相关资源
      最近更新 更多