2017-02-22 35 views
0

После ответа, найденного здесь https://stackoverflow.com/a/15362856 (мне пришлось добавить const в мой файл из-за экспресс-промежуточных версий). Кажется, я не могу получить запрос на обработку. Я использую почтальон для имитации почтового вызова, когда я отправляю POST, ничего не отображается в журнале сервера, и запрос просто «держится». После того, как я отменить запрос, журнал сервер говорит, POST /login?username=foo&password=bar - - ms - -PassportJS не заполняется запрос

Вот мой server.js файл:

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

Очевидно, я что-то не хватает, но после двух дней я не прибегая к помощи может показаться фигурой что это такое. Помощь будет принята с благодарностью.

Благодаря

+0

Может быть, вы упускаете обработчики маршрута для '/ accessed' и'/access'? – Nindaff

+0

У меня их нет, но когда я это сделал, все равно ничего не изменилось. На самом деле это не должно меняться, потому что Angular будет стрелять в меня по указанному URL без контроллера или представления, если обработчик маршрута не существует, подумал я. –

ответ

0

Похоже, вы не инициализируется cookie-parser и body-parser правильно.

Попробуйте это:

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

Решила проблему спасибо! –