2017-03-10 4 views
0

Das folgende Programm verwendet passportjs für Benutzername/Kennwort-Authentifizierung. Ich mache keinen Fehler, den ich mache, aber ich werde immer auf die Fehlerseite umgeleitet, d. H. Zurück zur Anmeldeseite.Authentifizierungsfehler bei Passport-Middleware wird nie aufgerufen

var passport = require('passport') 
    , LocalStrategy = require('passport-local').Strategy 
    , express = require('express'); 


var app = express(); 

app.listen(3000); 

app.use(express.static(__dirname+'/public')); 
app.use(passport.initialize()); 
app.use(passport.session()); 

passport.use(new LocalStrategy(
    function(username, password, done) { 
    console.log(username + ':username'); 
    console.log(password + ':password'); 
    return done(null, [{username:'foo'}]); 
    } 
)); 

app.get('/login',(req,resp) => { 
    var options = { 
     root: __dirname + '/public/' 
    }; 

    resp.sendFile('login.html',options); 
}); 

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

Ich versuche, die Arbeits von passportjs und ich sehe, zu verstehen, dass die Middleware passport.use(new LocalStrategy( nie aufgerufen wird. Ich kenne den Grund nicht, aber vielleicht ist es die Ursache des Scheiterns.

Antwort

0

Vielleicht Pass Sitzung Sitzung versuchen hinzufügen app.use(express.session({ secret: 'keyboard cat' })); vor Passport Config.

Sie müssen Ihre Strategie benennen und serialisiert Benutzer

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

passport.use('local', new LocalStrategy(
    function(username, password, done) { 
    console.log(username + ':username'); 
    console.log(password + ':password'); 
    return done(null, [{username:'foo'}]); 
    } 
)); 

Sie diese Strategie in diesem Beispiel beim Namen nennen local

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

Immer noch nicht in die Middleware. –

0

So wurde ich body parser Modul von passportjs erforderlich fehlt der Post-Anforderung zu analysieren . Hier ist der vollständige Code:

var passport = require('passport') 
    , LocalStrategy = require('passport-local').Strategy 
    , express = require('express') 
    , bodyParser = require('body-parser'); 


var app = express(); 

app.listen(3000); 

app.use(express.static(__dirname+'/public')); 
app.use(bodyParser.urlencoded({ extended: false }));// parse application/x-www-form-urlencoded 
app.use(bodyParser.json()); // parse application/json 
app.use(passport.initialize()); 
app.use(passport.session()); 

passport.use('local',new LocalStrategy(
    function(username, password, done) { 
    console.log(username + ':username'); 
    console.log(password + ':password'); 
    return done(null, {username:username}); 
    } 
)); 

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

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


app.get('/login',(req,resp) => { 
    var options = { 
     root: __dirname + '/public/' 
    }; 

    resp.sendFile('login.html',options); 
}); 

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