@BarneyGumble

Как вывести более детальный лог ошибки в Express (Passport)?

Пытаюсь с помощью Express написать банальную систему регистрации/авторизации через Passport, но упёрся в ошибку и не понимаю куда двигаться дальше. При попытке отправить данные из формы в базу Mongo получаю в messages ошибку "Missing credentials" - joxi.ru/8Anok4bfjEG4Gr
Что именно ему не нравится не пойму. Какие есть способы вывести более детальный лог ошибок?

app.js

app.get('/register', function(req, res, next) {
    var messages = req.flash('error');
    res.render('register.hbs', {
        title: 'Регистрация',
        messages: messages, 
        hasErrors: messages.length > 0
    });
});

app.post('/register', passport.authenticate('local.signup', {
    successRedirect: 'start',
    failureRedirect: 'register',
    failureFlash: true
}));


passport.js

var passport = require('passport');
var User = require('../models/user');
var LocalStrategy = require('passport-local').Strategy;


passport.serializeUser(function(user, done) {
	done(null, user.id);
});

passport.deserializeUser(function(id, done) {
	User.findById(id, function(err, user) {
		done(err, user);
	});
});

passport.use('local.signup', new LocalStrategy({
    usernameField: 'username',
    password: 'password',
    passRecToCallback: true
}, function(req, username, password, done) {
 User.findOne({username: 'username'}, function(err, user) {
  if(err) {
    return done(err);
  }
  if(user) {
   return done(null, false, {message: 'Такой username занят'});
  }
  var newUser = new User();
  newUser.username = username;
  newUser.password = newUser.encryptPassword(password);
  newUser.save(function(err, result) {
   if(err) {
    return done(err);
   }
   return done(null, newUser);
  });
 }); 
}
)
);




passport.use('local.signup', new LocalStrategy({
    usernameField: 'username',
    passwordField: 'password',
    passReqToCallback: true
}, function (req, username, password, done) {
    req.checkBody('username', 'Invalid username').notEmpty();
    req.checkBody('password', 'Invalid password').notEmpty().isLength({min:4});
    var errors = req.validationErrors();
    if (errors) {
        var messages = [];
        errors.forEach(function(error) {
           messages.push(error.msg);
        });
        return done(null, false, req.flash('error', messages));
    }
    User.findOne({'username': username}, function (err, user) {
        if (err) {
            return done(err);
        }
        if (user) {
            return done(null, false, {message: 'username is already in use.'});
        }
        var newUser = new User();
        newUser.username = username;
        newUser.password = newUser.encryptPassword(password);
        newUser.save(function(err, result) {
           if (err) {
               return done(err);
           }
           return done(null, newUser);
        });
    });
}));
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы