2015-09-14 6 views
5

Sto provando a fare un'autenticazione base utente/password utilizzando passport.js e passport local.Express Passport.js Il reindirizzamento di successo non carica la pagina, richiesta continua in attesa

Mentre failureRedirect fa esattamente ciò che deve fare, (reindirizza a una pagina specificata), successRedirect rimane in attesa con la richiesta per la sua pagina specificata e, dopo un po 'di tempo, restituisce "risposta vuota".

http://www.deviantpics.com/VdG

Come si può vedere in questa foto, quando si richiede cruscotto, si dice che la sua dimensione è 0B, ma quando vado su quel cruscotto senza orientarli dice che ha 1,6 miliardi.

Ho cercato Stackoverflow e non sono riuscito a trovare una risposta che potesse aiutarmi.

La prego di controllare il mio codice e suggerire qualcosa prima di andare berserk.

Questo è un codice di carico passaporto

//set expression 
var expressSession = require('express-session'); 
app.use(expressSession({ 
    secret: credentials.session.secret 
})); 

//set passport 
var passport = require('passport'); 

var localStrategy = require('./strategies/auth/local.js'); 
passport.use('local', localStrategy); 

passport.serializeUser(function(user, done) { 
    done(null, user.id); 
}); 

passport.deserializeUser(function(id, done) { 
    User.findById(id, function(err, user) { 
     done(err, user); 
    }); 
}); 

app.use(passport.initialize()); 
app.use(passport.session()); 

routes.js

module.exports = function (app) {

//main 
app.get('/', main.home); 
app.get('/login', main.login); 
app.get('/signup', main.signup); 
app.post('/login', auth.loginLocal); 
app.post('/signup', main.checkSignup); 

//user 
app.get('/user/dashboard', user.dashboard); 
app.get('/user/addmemory', user.addMemory); 
app.get('/user/memory', user.memory); 

funzione di login

exports.loginLocal = passport.authenticate('local', { 
    successRedirect: '/user/dashboard', 
    failureRedirect: '/login' 
}); 

strategia locale

var localAuthStrategy = new LocalStrategy(function(username, password, done) { 

    User.findOne({ 
     username: username 
    }, function(err, user) { 
     if (err) { 
      return done(err); 
     } 

     if (!user) { 
      return done(null, false, { 
       message: 'Incorrect username' 
      }); 
     } 

     if (!user.validPassword(password)) { 
      return done(null, false, { 
       message: 'Incorrect password' 
      }); 
     } 

     return done(null, user); 
    }); 


}); 

funzione cruscotto

exports.dashboard = function(req, res) { 
    res.render('user/dashboard', { 
     layout: 'user' 
    }); 
}; 

risposta

5

ho trovato una risposta alla mia domanda, il problema era che il modello d'uso non è stato definito nello script in cui sono stati definiti serializeUser e deserializeUser. non riuscivo a capire cosa stava succedendo, perché non ho definire qualsiasi azione fermo tutto gestore, quindi una cosa da ricordare, assicurarsi di avere pescato tutto gestore definito per sapere cosa sta succedendo

app.use(function(err, req, res, next) { 
    console.log(err); 
}); 
+0

Allo stesso modo per me avevo dimenticato di mettere la parentesi alla fine di serializeUser() - silenziosamente non reindirizzare, ma senza errori. Ancora peggio è stata l'applicazione ha funzionato bene quando si inseriscono i dati utente errati. – Bruford

Problemi correlati