web-dev-qa-db-ja.com

パスポートjsに資格情報がありません

数時間これに取り組んでおり、かなりイライラしています...

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

これを実行するとき、console.logを使用し、出力は{ message: 'Missing credentials' }でした。このため、ボディパーサーがボディメッセージを正しく解析していないと思われます。ただし、このルートを使用する場合...

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

console.logを使用した場合、出力は{password: 'password', email: '[email protected]'}でした。これは、req.body変数が適切に設定されており、使用可能であることを示しています。

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());
17
l2silver

req.bodyには{password: 'password', email: '[email protected]'}が含まれています。 emailはpassportjsが探しているものではありませんが、usernameは探しています。 HTML/JSで入力名を変更するか、passportjsがreq.bodyで検索するデフォルトのパラメーターを変更できます。戦略を定義する場所にこれらの変更を適用する必要があります。

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 ...
    // ...
  }
));
40
Aᴍɪʀ

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) {
...
4
IT Vlogs