2015-12-29 7 views
9

worden auf diese für ein paar Stunden arbeiten jetzt, ziemlich frustrierend ...Pass js fehlende Credentials

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

Als ich dies ausführen, verwendet i console.log, war Ausgangs { message: 'Missing credentials' }, die mich führt zu glauben, dass der Körper Parser analysiert die Textnachricht nicht richtig. aber wenn ich diesen Weg benutzen ...

router.post('/', 
    function(req, res){ 
     console.log(req.body); 
     res.setHeader('Content-Type', 'application/json'); 
     res.send(JSON.stringify({ a: 1 })); 
    }); 

Als ich noch console.log, war der Ausgang {password: 'password', email: '[email protected]'}, was darauf hindeutet, dass die req.body Variablen richtig eingestellt werden und stehen zur Verfügung.

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()); 
+0

Ich bin auch mit Blick auf gleiche Art von Problem und tat alots der Suche aber coundn't keine Lösung finden :-( –

Antwort

24

Ich sehe dein req.body{password: 'password', email: '[email protected]'} enthält. email ist nicht was Passjurs sucht, aber username ist. Sie können entweder Ihre Eingabenamen in Ihrem HTML/JS ändern, oder Sie können die Standardparameter ändern, nach denen passusjs in req.body sucht. Sie müssen diese Änderungen anwenden, wenn Sie Ihre Strategie definieren.

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 ... 
    // ... 
    } 
)); 
2

In 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) { 
...