2017-12-28 18 views
0

Ich versuche, Benutzer auf meiner Website zu authentifizieren, und ich habe diesen FehlerUnbekannte Authentifizierungsstrategie „local“

Unbekannte Authentifizierungsstrategie ‚local-login‘

Ich habe versucht, die Änderung der Name der Strategie, auch ich habe andere Threads in SO gelesen, aber keine Lösung gefunden.

// Passport 
module.exports = function(passport) { 
    passport.serializeUser(function(user, done) { 
    done(null, user.id); 
}); 

passport.deserializeUser(function(id, done) { 
    connection.query('SELECT * FROM `users` WHERE `id` = ' + connection.escape(id), function(err, rows) { 
     done(err, rows[0]); 
    }); 
}); 

passport.use('local-login', new LocalStrategy({ 
    usernameField : 'username', 
    passwordField : 'password' 
}, 
function(req, username, password, done) { 
    connection.query('SELECT * FROM `users` WHERE `username` = ' + connection.escape(username), function(err, rows) { 
     if(err) 
      return done(err); 
     if(!rows.length) { 
      return done(null, false, req.flash('loginMessage', 'Invalid username or password. Please try again.')); 
     } 
     if(!(rows[0].password == password)) 
      return done(null, false, req.flash('loginMessage', 'Invalid username or password. Please try again.')); 

     return done(null, rows[0]); 
    }); 
    })); 
} 

// Express Router 
app.use(sessionMiddleware); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(flash()); 
app.use('/static', express.static('./static')); 

app.post('/login/auth', passport.authenticate('local-login', { 
    successRedirect: '/dashboard', 
    failureRedirect: '/', 
    failureFlash: true 
})); 

Antwort

1

zuerst Ihre Installation überprüfen:

npm install passport passport-local --save 

Dann Pass importieren wie unten:

const passport = require('passport'); 
const LocalStrategy = require('passport-local').Strategy; 

vor Ihrer app.use() Methoden:

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

es dann wie folgt verwenden .

passport.use(new LocalStrategy({ 
    usernameField : 'username', 
    passwordField : 'password' 
}, (req, username, password, done) => { 
    // Your logic here... 
     ... 
     .. 
    })); 
} 

schließlich in Ihrem Router (keine Notwendigkeit 'local-login' als erstes Argument geben):

app.post('/login/auth', passport.authenticate('local', { 
    successRedirect: '/dashboard', 
    failureRedirect: '/', 
    failureFlash: true }), 
function(req, res) { 
    res.redirect('/'); 
}); 

Weitere Informationen: passport-local

+0

Was soll ich in config-include/Reisepass ? Ich habe diese Datei nicht – GhoSTBG

+0

@GhoSTBG Bitte überprüfen Sie die aktualisierte Antwort. – gokcand

+0

es funktioniert immer noch nicht – GhoSTBG

Verwandte Themen