Паспорт логин - mysql

0

У меня возникли проблемы с входом в паспорт с помощью mysql. Вот мой код:

    /*jshint esversion: 6 */
const LocalStrategy = require('passport-local').Strategy;
const db = require('../config/db');
const bcrypt = require('bcryptjs');

module.exports = function(passport) {

  // =========================================================================
  // passport session setup ==================================================
  // =========================================================================

  // used to serialize the user for the session
  passport.serializeUser(function(user, done) {
    done(null, user.id);
  });

  // used to deserialize the user
  passport.deserializeUser(function(id, done) {
    db.query('SELECT * FROM users WHERE id = ?', [id], function(err, rows) {
      done(err, rows[0]);
    });
  });

  // Local Strategy login
  passport.use(new LocalStrategy(function(username, password, done) {

    // Match Username
    let sql = 'SELECT * FROM users WHERE username = ?';
    db.query(sql, [username], function(err, rows) {
      if (err)
        return done(err);
      if (!rows.length) {
        return done(null, false, {message: 'Wrong user'});
      }

      //  Match Password
      bcrypt.compare(password, rows[0].password, function(err, isMatch) {
        if(err)
          return done(err);
        if(isMatch){
          return done(null, rows[0]);
        } else {
          return done(null, false, {message: 'Wrong pass'});
        }
      });
    });
  }));
};

Не удается POST для пользователя/пользователя

никакие другие ошибки не регистрируются, это странно, потому что я настроил его там, где он должен работать, поскольку мой регистр настроен точно так же, поэтому я собираюсь дать фрагменты всего кода, чтобы дать представление поэтому сначала фрагменты из основного файла:

// Passport config
require('./config/passport')(passport);

app.use(passport.initialize());
app.use(passport.session());

// User Route
let user = require('./routes/reg');
app.use('/user', user);

Хорошо, теперь материал, который находится в файле reg.js для логина входа.

// Login Process
router.post('/login', function (req, res, next) {
  passport.authenticate('local', {
    sucessRedirect: '/',
    failureRedirect: '/',
    failureFlash: true,
  })(req, res, next);
});

И теперь фактическая форма, которая ПОСТ к нему:

    <form method="POST" action="/user/login">
      <h3><label>Username:</label></h3><input type="text" name="username" placeholder="Username" /><br>
      <h3><label>Password:</label></h3><input type="password" name="password" placeholder="Password" /><br>
      <br><input type="submit" name="login" value="Login"><a href="#" style="font-size: 12px;">  Lost Password?</a>
    </form>

UPDATE: Кажется, что логин ошибочен, он делает все правильно, однако, если логин верен, он делает " Cannot POST/user/login ", поэтому я предполагаю, что это как-то связано с моей линией:

return done(null, rows[0]);

Меня это точно не удивляет, однако я не знаю, почему он это делает.

Хорошо, я убежден, что это не сериализация пользователя. Который я искал, но ничего не могу найти.

Теги:
passport.js

1 ответ

1
Лучший ответ

Я думаю, что есть проблема в процессе входа в систему.

Вы можете использовать функцию authenticate() качестве промежуточного ПО маршрутизации для аутентификации запросов. Как это:

router.post('/login', 
  passport.authenticate('local', { failureRedirect: '/login' }),
  function(req, res) {
    res.redirect('/');
  });
  • 0
    На первый взгляд удаление next, вероятно, ничего не сделает, так как функция работает. Эта проблема возникает только при успешном входе в систему. Если бы это была проблема, она бы сделала это для всех других сценариев (неверное имя пользователя и / или пароль). Я не могу проверить это прямо сейчас, но я думаю, что у меня возникнет та же проблема, или совершенно новая.
  • 0
    Как я и подозревал, удаление следующего сломало его. (не уверен, точная ошибка, хотя, поскольку я только сделал это быстро на работе).
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню