2015-12-29 14 views
9

pracuje nad tym przez kilka godzin teraz, dość frustrujące ...paszport js brakujące poświadczenia

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

Kiedy uruchamiam to, użyłem console.log, wyjście było { message: 'Missing credentials' }, która prowadzi mnie do przypuszczenia, że ​​ciało analizator składni nie przetwarza poprawnie komunikatu o treści. Kiedy korzystać z tej trasy however ...

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

kiedy używany console.log, wyjście było {password: 'password', email: '[email protected]'}, co wskazuje, że req.body zmienne są ustawione prawidłowo i są dostępne.

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

Jestem również stoi sam rodzaj problemu i nie alots poszukiwań ale coundn't znaleźć żadnego rozwiązania :-( –

Odpowiedz

24

widzę swoją req.body zawiera {password: 'password', email: '[email protected]'}. email nie jest tym, czego szuka passportjs, ale jest to username. Możesz zmienić nazwy wejściowe w HTML/JS lub zmienić domyślne parametry, których szuka passportjs w req.body. Trzeba wprowadzić te zmiany, gdy definiujesz swoją strategię.

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

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