J'y travaille depuis quelques heures maintenant, assez frustrant ...
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 }));
});
Quand je lance ceci, j'ai utilisé console.log
, la sortie était { message: 'Missing credentials' }
, ce qui m'amène à croire que l'analyseur corporel n'analyse pas correctement le message corporel. Cependant, lorsque j'utilise cette route ...
router.post('/',
function(req, res){
console.log(req.body);
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ a: 1 }));
});
Quand j'ai utilisé console.log
, la sortie était {password: 'password', email: '[email protected]'}
, ce qui indique que le req.body
les variables sont définies correctement et sont disponibles.
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());
Je vois ton req.body
contient {password: 'password', email: '[email protected]'}
. email
n'est pas ce que cherche passportjs, mais username
l'est. Vous pouvez soit modifier vos noms d'entrée sur votre HTML/JS, soit modifier les paramètres par défaut que passportjs recherche dans req.body
. Vous devez appliquer ces modifications là où vous définissez votre stratégie.
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 ...
// ...
}
));
Dans Router.post:
router.post('/', passport.authenticate('local-signup', {
successRedirect: '/dashboad',
failureRedirect: '/',
badRequestMessage: 'Your message you want to change.', //missing credentials
failureFlash: true
}, function(req, res, next) {
...