passport.authenticate не завершает загрузку с sequelize4 + passport + express (ошибка: ошибка сети) - PullRequest
0 голосов
/ 06 декабря 2018

Упрощенный код выглядит следующим образом:

await this.$store.dispatch('auth/login', {
    email: this.form.email,
    password: this.form.password
});

, который вызывает это:

import axios from 'axios';
export const login = async function({ commit }, { email, password }) {
if (!email || !password) throw new Error('Email and password are required');
try {
  const { data } = await axios.post('/api/auth/login', { email, password });
  // commit(mutations.SET_USER, data);
 } catch (error) {
    console.log(error);
}

, а запрос axios обрабатывается так:

import passport from 'passport';
router.post('/login', passport.authenticate('local'), (req, res) => { 
  // res.json(req.user);
  res.status(200).json({ message: 'user' });
});

auth_config.js имеет следующее:

const LocalStrategy = require('passport-local').Strategy;
const User = require('./api/models').User;
module.exports = passport => {
passport.use(
new LocalStrategy({ usernameField: 'email' }, (email, password, done) => {
  console.log('1');
  User.findOne(
    {
      where: {
        email: email
      }
    },
    (err, user) => {
      console.log('user.comparePassword ...');
      done(null, user);
    }
  );
  console.log('2');
 })
 );
};

(Обратите внимание, что добавление параметра req перед именем пользователя или выполнение return done(..., как описано в readme-local Passme , также не работает.)

Серверный index.js имеет следующие важные части:

const session = require('express-session');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const passport = require('passport');
app.use(bodyParser.json());
app.use(cookieParser());
app.use(
 session({
  secret: ',djkwnks&jnfk/gmKZNFuif3%',
  resave: false,
  saveUninitialized: false,
  cookie: { maxAge: 60000 }
 })
);
app.use(passport.initialize());
app.use(passport.session());
//const sequelize = require('sequelize');
//sequelize.Promise = global.Promise;
require('./auth_config')(passport);

Вывод:

1
2
Выполнение(по умолчанию): SELECT ...

Таким образом, выполняется оператор SQL для выбора пользователя.


Теперь моя проблема в том, что он не завершает загрузку (await axios.post не завершает работу), и через некоторое время я получаю сообщение «Ошибка: ошибка сети».
Регистрация пользователяработает.
Я уже попробовал несколько вещей из руководств и readmes.Это может быть проблема с какой-то асинхронной функциональностью?Может быть, что-то, что связано с sequelize.Promise?Это проблема с passport-local?Может быть, я просто пропускаю что-то тривиальное здесь?Любая помощь высоко ценится.

...