Been working on this for a few hours now, pretty frustrating...
router.post('/',
passport.authenticate('local-signup', function(err, user, info) {
console.log(err);
}), function(req, res){
console.log(req);
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ a: 1 }));
});
When I run this, i used console.log
, output was { message: 'Missing credentials' }
, which leads me to believe that the body parser is not properly parsing the body message. When I use this route however...
router.post('/',
function(req, res){
console.log(req.body);
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ a: 1 }));
});
When I used console.log
, the output was {password: 'password', email: '[email protected]'}
, which indicates that the req.body
variables are being set properly and are available.
app.js
var express = require('express');
var app = express();
var routes = require("./config/routes.config");
var models = require("./config/models.config");
var session = require('express-session');
var bodyParser = require('body-parser');
models.forEach(function(model){
GLOBAL[model] = require('./models/'+model+".model");
});
var passport = require("./config/passport.config");
app.use( bodyParser.urlencoded({ extended: true }) );
app.use(session({ secret: 'simpleExpressMVC', resave: true, saveUninitialized: true }));
app.use(passport.initialize());
app.use(passport.session());
I see your req.body
contains {password: 'password', email: '[email protected]'}
. email
is not what passportjs is looking for, but username
is. You can either change your input names on your HTML/JS, or you can change the default parameters passportjs is looking for in req.body
. You need to apply these changes where you define your strategy.
passport.use(new LocalStrategy({ // or whatever you want to use
usernameField: 'email', // define the parameter in req.body that passport can use as username and password
passwordField: 'password'
},
function(username, password, done) { // depending on your strategy, you might not need this function ...
// ...
}
));