2015-09-14 17 views
5

Próbuję wykonać podstawowe uwierzytelnianie za pomocą nazwy użytkownika/hasła przy użyciu pliku paszport.js i paszportu lokalnego.Przekierowanie sukcesu Express Passport.js nie ładuje strony, żądanie oczekuje na przetwarzanie

Podczas gdy failureRedirect wykonuje dokładnie to, co powinien, (przekierowuje do określonej strony), successRedirect oczekuje z żądaniem dla określonej strony, a po pewnym czasie zwraca "pustą odpowiedź".

http://www.deviantpics.com/VdG

Jak widać na tym zdjęciu, gdy prosi o deskę rozdzielczą, to mówi, że jego wielkość jest 0B, ale kiedy idę na tej desce rozdzielczej bez przekierowanie mówi, że ma 1.6b.

Rozejrzałem się po Stackoverflow i nie mogłem znaleźć odpowiedzi, która by mi pomogła.

Czy możesz sprawdzić mój kod i coś zasugerować, zanim wpadnę w szał.

to kod ładunkowych paszport

//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 = funkcja (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); 

funkcja logowania

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

strategii lokalnej

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


}); 

funkcja dashboard

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

Odpowiedz

5

znalazłem odpowiedzi na moje pytanie, problemem było to, że model Użytkownik nie zostało zdefiniowane w skrypcie gdzie serializeUser i deserializeUser zostały zdefiniowane. Nie mogłem dowiedzieć się, co się dzieje, bo nie określają żadnych działań w złapać wszystkie obsługi, a więc jest, aby pamiętać, upewnij się, że złapać wszystkie obsługi zdefiniowany wiedzieć, co się dzieje

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

Podobnie dla ja zapomniałem umieścić nawias na końcu serializeUser() - po cichu nie przekierowałem, ale bez błędów. Co gorsza, aplikacja działała dobrze po wprowadzeniu błędnych danych użytkownika. – Bruford