我目前正在学习节点,并且我正在尝试使用护照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,当我登录时可以在那里看到会话。我每次登录会话时都会更新,但在我退出时却没有。知道我哪里出错了吗?
答案 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 } )
});
}
}
试试这个。如果它不起作用。评论如下。