@historydev
Острая аллергия на анимешников

Почему passport не авторизует при корректных данных?

Доброе утро.Скажите пожалуйста,почему при одинаковых данных паспорт не авторизует пользователя?
Я вывожу в консоль следующее:

При корректной авторизации: console.log(userDB.email[0]) - John@mail.ru
При некорректной авторизации: console.log(userDB.password[0]) - Hancock

И перед проверками:

console.log(email + '/' + password) //входящие данные
console.log(userDB.email[0] + '/' + userDB.password[0]) //данные из бд


В консоли получаю это:

John@mail.ru/Hancock //Входящие данные
John@mail.ru/Hancock //Данные из бд
Hancock //Некорректная авторизация

Вот код:

const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;

const Sequelize = require('sequelize');

// Option 1: Passing parameters separately
const sequelize = new Sequelize('test', 'root', '', {
  host: 'localhost',
  dialect: 'mysql',
  operatorsAliases: false,
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }

  // dialectOptions: {
  //   socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock',
  //   supportBigNumbers: true,
  //   bigNumberStrings: true
  // },

});

sequelize
  .authenticate()
  .then(() => {
    console.log('Connection has been established successfully.');
  })
  .catch(err => {
    console.error('Unable to connect to the database:', err);
  });

const User = sequelize.define('users', {
  // attributes
  email: {
    type: Sequelize.STRING,
    allowNull: false
  },
  password: {
    type: Sequelize.STRING
    // allowNull defaults to true
  }
}, {
  // options
});

let userDB = null;

sequelize
  .query('SELECT * FROM users', { raw: true })
  .then(users => {
  	const isIds = users[0].map(user => user.id);
  	const isEmails = users[0].map(user => user.email);
  	const isPasswords = users[0].map(user => user.password);

  	userDB = {
		id: isIds,
		email: isEmails,
		password: isPasswords
	}
});

passport.serializeUser(function(user, done) {
	console.log("Serialize: ", user);
  	done(null, user.id);
});

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

  	console.log("Deserialize: ", id);
  	user = (userDB.id[0] === id) ? userDB : false;
  	done(null, user);

});

passport.use(new LocalStrategy(
	{usernameField: 'email'},
  function(email, password, done) {
  	console.log(email + '/' + password)
  	console.log(userDB.email[0] + '/' + userDB.password[0])
  	if(email === userDB.email[0] && password === userDB.password[0]) {
  		console.log(userDB.email[0])
  		return done(null,userDB)
  	}
  	else {
  		console.log(userDB.password[0])
  		return done(null,false)
  	}
  })
);
  • Вопрос задан
  • 36 просмотров
Решения вопроса 1
adelkhalitov
@adelkhalitov
>
Попробуйте https://nodejs.org/en/docs/guides/debugging-gettin...
Мне кажется это вам поможет
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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