2017-09-21 1 views
0

J'apprends actuellement un noeud et j'essaie d'écrire une fonction de déconnexion réussie en utilisant le passeport js. Jusqu'à présent, je suis parvenu à enregistrer les utilisateurs et aussi les connecter je configurer ai un contrôleur Auth ci-dessous avec le code de connexion et de travaux et le code qui ne semble déconnexion pas.Noeud JS - La déconnexion du passeport ne fonctionne pas

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

Voici la routage pour les deux fonctions:

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

Je ne sais pas si cela fait une différence, mais je construis l'avant avec réagir et en utilisant Axios qui agit plus ou moins comme Ajax pour se connecter à ces routes et les utiliser comme critères d'évaluation . Ma compréhension est que quand je clique sur le chemin d'accès/déconnexion js doit supprimer l'objet utilisateur de la demande - est-ce correct? Pour le moment, ça ne l'enlève pas. J'ai MongoDB Compass également configuré et peut voir la session là-bas quand je me connecte. Chaque fois que je me connecte aux mises à jour de l'heure de la session, mais ne le fait pas lorsque je me déconnecte. Une idée d'où je me suis trompé?

Répondre

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

J'ai la même configuration que vous. Frontend - Réagissez et Backode NodeJs. J'ai appelé/déconnexion route en utilisant Axios. Ça fonctionne bien pour moi.

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

    } 
} 

Essayez ceci. Si ça ne marche pas. commentaires ci-dessous.