2012-06-10 12 views
7

(aktualisierte Code mit Serialisierung Funktionen - noch Umleitungen an/failedRedirect)Node.js Benutzerauthentifizierung Pass mit

Ich versuche einfach Benutzername/Passwort-Authentifizierung geht mit dem Pass-Paket zu bekommen, aber scheitern. Im Beispiel unten Ich habe versucht, indem im Grunde immer wiederkehr eine gültige Authentifizierung (unabhängig davon, was übergeben wird), dass die Authentifizierung funktioniert, um zu überprüfen, aber aus irgendeinem Grunde fehlschlägt und Pass Umleitungen an dem Login-Link fehlgeschlagen.

Wenn jemand mir in herauszufinden, helfen könnte, wie dieses Beispiel zu bekommen, um einfach alles zu authentifizieren, soll ich in der Lage sein, von dort aus zu verwalten.

Der Code in Coffeescript ist:

express = require "express" 
passport = require "passport" 
LocalStrategy = require("passport-local").Strategy 

passport.use(new LocalStrategy((username, password, done) -> 
    console.log "LocalStrategy invoked" 
    done(null, {id: 1, name: "Marius"}) 
)) 

passport.serializeUser (user, done) -> 
    done null, user 

passport.deserializeUser (obj, done) -> 
    done null, obj 

app = express.createServer() 

app.configure -> 
    app.use express.bodyParser() 
    app.use express.static("./public") 
    app.use express.cookieParser("SOMESECRET") 
    app.use express.session 
    secret: "SOMESECRET" 
    cookie: 
     maxAge: 60000 
    app.use passport.initialize() 
    app.use passport.session() 
    app.set "view", "./srv/views" 
    app.set "view engine", "jade" 

app.get "/login", (req, res) -> 
    res.send "login page" 

app.post "/login", passport.authenticate("local", 
    failureRedirect: "/failedRedirect" 
    successRedirect: "/successRedirect" 
    failureFlash: true) 

app.listen 8082 

Gelöst: Ok, ich glaube, ein paar Gründe, warum es gab ich es nicht arbeiten konnte. Das serialize Zeug kann man (ich habe nicht getestet), aber da Jared sagte sie gebraucht wurden, ich verlasse sie in (er ist der Autor von Passport). Die andere Verwirrung kann mit ausdrücklichen Versionen und meiner Verwirrung mit npm zusammenhängen. Ich glaube, ich habe sowohl das neueste v2 von express getestet, aber ich habe auch v3 getestet, was ich jetzt betreibe. Für die Version drei, sollten Sie wahrscheinlich auch das connect-flash Modul auf Github überprüfen, wie einige auf die „Flash“ Sachen, die in Jareds Beispielen verwendet wurden aus ausdrücklichem v3 bewegt (so setzt das Modul, um es wieder in ...). Und schließlich, stellen Sie sicher, dass Sie veröffentlichen die richtigen Namen Eingabenamen (username und password Standard).

Antwort

11

Es sieht für mich wie Sie die notwendigen Benutzer Serialisierung Logik sind vermisst eine Login-Sitzung aufzubauen. Wenn ich diese beiden Funktionen der JavaScript-Code hinzufügen, funktioniert es:

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

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

Hier finden Sie die Benutzer nach Ihren Bedürfnissen serialisiert werden soll. Details sind am Ende dieser Seite: http://passportjs.org/guide/configuration.html

+0

Aktualisierter Code in Frage zu enthalten Serialisierungsfunktionen, aber die Authentifizierung schlägt an meinem Ende fehl. Wird der aktualisierte Code bei Ihnen erfolgreich authentifiziert? Danke .. –

+0

Ja, tut es. Kopiert Ihr Code die Meldung "LocalStrategy aufgerufen". Es könnte helfen, 'app.use (express.errorHandler ({dumpExceptions: true, showStack: true})))' 'zu mounten und zu sehen, ob irgendwelche Ausnahmen ausgelöst werden. –

+0

An meinem Ende wird selbst die "aufgerufene" Nachricht nicht angezeigt. Ich werde dein errorHandler Ding ausprobieren um zu sehen ob etwas auftaucht. –

9

Die Post-Variablen-Namen neigen dazu, das größte Problem für Leute zu sein, die ich Probleme mit der lokalen Passwort-Strategie sehe. Es sollte wahrscheinlich groß und fett in der Dokumentation sein, und es sollte wahrscheinlich Konfigurationswerte geben, um sie zu ändern.

+0

Es sieht so aus, als ob es Konfigurationswerte gibt, um sie jetzt zu ändern. Unten auf dieser Seite: http://passportjs.org/guide/username-password/ –

+0

Ja, dieser hat mich zwei Tage lang in den Hintern gebissen. – darethas

1

Ich habe succsessfully von diesem Link http://danialk.github.io/blog/2013/02/23/authentication-using-passportjs/ Download Beispielcode von https://github.com/DanialK/PassportJS-Authentication Ort getan

nur eine Änderung, um in routes.js Änderungscode

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

erforderlich ist ------ ------------------------

app.post("/login" ,passport.authenticate('local',{failureRedirect : "/login"}), function(req,res){ res.render('your home page here', {user : req.user });}); 
Verwandte Themen