2017-09-29 4 views
0

Mon rappel a été appelé avec succès lorsque j'ai essayé de me connecter et j'ai reçu le message SUCCESS. Mais je suis toujours redirigé vers la page de connexion.La stratégie locale de passeport ne s'authentifie pas

passport.use(new LocalStrategy(
function(username, password, done) { 

     console.log(username + "----" + password) 

     if(username == "test" && password == "test"){ 
      console.log("SUCCESS") 
      done(null, { name: username}) 
     } 
     else{ 
      done(null, false) 
     } 
})) 

Mes itinéraires sont définis dans l'ordre suivant

.. some othe initialization, cookieparser, bodyparser, session ... 
app.use(passport.initialize()) 
app.use(passport.session()) 

app.use('/login', login); 


app.post('/login',passport.authenticate('local', { failureRedirect: '/login' }), 
    function(req, res) { 
     res.redirect('/plans'); 
    }); 

app.all('*',function (req, res, next) { 

    console.log(req.isAuthenticated()) 
    if (req.isAuthenticated()) { 
     return next() 
    } 
    res.redirect('/login') 
}) 

app.use('/', index); 
app.use('/users', users); 
app.use('/plans', plans); 

Y a-t-il une erreur ici? Merci.

Répondre

0

Cela peut être un peu un coup dans le noir, mais avez-vous besoin d'un succèsRedirect au-dessus de l'échecRedirect? Je pense que vous êtes correctement authentifié, mais la route ne sait pas quoi faire après le succès, donc il est tout simplement par défaut à tous les chemins disponibles. Comme je l'ai dit, c'est une supposition, mais semble plausible.

Faites-moi savoir.

Juste pour montrer un exemple de la documentation de passeport:

app.post('/login', 
passport.authenticate('local', { successRedirect: '/', 
           failureRedirect: '/login' })); 

Source: http://passportjs.org/docs

Aussi, si vous voulez authentifier et ont ensuite tomber par la fonction d'itinéraire réel que vous croiserez alors je pense que vous voulez supprimer les redirections tous ensemble.

app.post('/login', 
passport.authenticate('local'), 
function(req, res) { 
    // If this function gets called, authentication was successful. 
    // `req.user` contains the authenticated user. 
res.redirect('/users/' + req.user.username); 
}); 

Également tiré de la documentation.

Best, Runner5

+0

je l'ai déjà tryed ci-dessus, mais cela ne suffit pas. Je ne suis toujours pas authentifié, même après tentative de connexion j'essaie d'accéder à n'importe quelle ressource –

+0

Comment demandez-vous les demandes de l'utilisateur? Utilisez-vous un système de jetons ou un système de session? Je pense que vous êtes réellement montré avec succès en obtenant la connexion de la console de succès dans la stratégie d'authentification. La question est pourquoi n'est pas respecté sur les demandes ultérieures. Je suppose que l'information d'autorisation appropriée n'est pas transmise pour les demandes faites. – Runner5