2017-02-22 9 views
0

Nach der Antwort hier gefunden https://stackoverflow.com/a/15362856 (Ich musste die const zu meiner Datei aufgrund der ausdrücklichen Middleware-Revisionen hinzufügen). Ich kann die Anfrage anscheinend nicht verarbeiten. Ich benutze Postbote, um den Postanruf zu simulieren, wenn ich den POST sende, erscheint nichts auf dem Serverprotokoll und die Anfrage "dreht sich nur noch". Sobald ich die Anforderung abbrechen, sagt der Server-Log, POST /login?username=foo&password=bar - - ms - -PassportJS Anfrage nicht abgeschlossen

Hier meine server.js Datei ist:

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

var app = express(); 

const flash = require('connect-flash'); 
const logger = require('morgan'); 
const cookieparser = require('cookie-parser'); 
const bodyparser = require('body-parser'); 
const session = require('express-session'); 

passport.use(new LocalStrategy(function(username, password, done) { 
    // insert your MongoDB check here. For now, just a simple hardcoded check. 
    if (username === 'foo' && password === 'bar') 
    { 
    done(null, { user: username }); 
    } 
    else 
    { 
    done(null, false); 
    } 
})); 

passport.serializeUser(function(user, done) { 
    // please read the Passport documentation on how to implement this. We're now 
    // just serializing the entire 'user' object. It would be more sane to serialize 
    // just the unique user-id, so you can retrieve the user object from the database 
    // in .deserializeUser(). 
    done(null, user); 
}); 

passport.deserializeUser(function(user, done) { 
    // Again, read the documentation. 
    done(null, user); 
}); 

app.use(logger('dev')); // log every request to the console 
app.use(cookieparser); // read cookies (needed for auth) 
app.use(bodyparser); // get information from html forms 
app.use(session({ secret: 'nextoner' })); // session secret 
app.use(passport.initialize()); 
app.use(passport.session()); // persistent login sessions 
app.use(flash()); // use connect-flash for flash messages stored in session 



// route to authenticate the user 
app.post('/login', passport.authenticate('local', { 
    successRedirect: '/accessed', 
    failureRedirect: '/access' 
})); 

app.listen(3012); 
// app.listen(3012); 

Klar bin ich etwas fehlt, aber nach zwei Tagen googeln ich nicht zu Figur scheinen heraus, was es ist. Hilfe würde sehr geschätzt werden.

Dank

+0

Vielleicht Route Handler Sie fehlt für '/ accessed' und'/access'? – Nindaff

+0

Ich habe sie nicht hinzugefügt, aber wenn ich es getan habe, hat es trotzdem keinen Unterschied gemacht. Es sollte eigentlich keinen Unterschied machen, da Angular mich ohne einen Controller oder eine Ansicht auf die angegebene URL schießen wird, wenn ein Routen-Handler nicht existiert, dachte ich. –

Antwort

0

Es sieht aus wie Sie nicht richtig cookie-parser und body-parser initialisiert.

Try this:

app.use(cookieparser()); 
app.use(bodyparser.json()); 
app.use(bodyparser.urlencoded()); 
+0

Gelöst das Problem, danke! –

Verwandte Themen