Passport-local: Параметры сеанса: false не работает

Созданный на 13 февр. 2017  ·  3Комментарии  ·  Источник: jaredhanson/passport-local

Я попробовал этот пример кода password-local-example и применил параметры к локальной стратегии.

//express-4.x-local-example/server.js
passport.use(new LocalStrategy({
  usernameField: 'email',
  passwordField: 'passwd',
  passReqToCallback: true,
  session: false
}, function(req, username, password, done) {
  // request object is now first argument
  // ...
  }));

Однако похоже, что сеанс все еще используется. Я мог получить пароль пользователя от req.session.user.

В этой библиотеке задаются только имя пользователя, пароль, обратный вызов.

//passport-local/lib/strategy.js
function Strategy(options, verify) {
  if (typeof options == 'function') {
    verify = options;
    options = {};
  }
  if (!verify) { throw new TypeError('LocalStrategy requires a verify callback'); }

  this._usernameField = options.usernameField || 'username';
  this._passwordField = options.passwordField || 'password';

  passport.Strategy.call(this);
  this.name = 'local';
  this._verify = verify;
  this._passReqToCallback = options.passReqToCallback;
}

У меня нет опыта в сфере безопасности. Верно ли, что я могу получить пароль пользователя в req.user.password?
Это будет небезопасно?

Самый полезный комментарий

Немного поздний ответ, но как ссылка для всех остальных:

Опция sessions описанная в файле readme, кажется неправильной ( см. PR, чтобы исправить это ).

Вместо этого его нужно добавить в инициализацию промежуточного программного обеспечения passport.authenticate ( источник ):

app.post('/login', passport.authenticate(['local'], {
    session: true
    /** other options **/
  }), (req, res) => {
    /** your handler */
  })

Все 3 Комментарий

Я также понял, что сеансы используются всегда, даже если в параметрах стратегии установлено значение false. Это проблема, правда?

Немного поздний ответ, но как ссылка для всех остальных:

Опция sessions описанная в файле readme, кажется неправильной ( см. PR, чтобы исправить это ).

Вместо этого его нужно добавить в инициализацию промежуточного программного обеспечения passport.authenticate ( источник ):

app.post('/login', passport.authenticate(['local'], {
    session: true
    /** other options **/
  }), (req, res) => {
    /** your handler */
  })

То же самое здесь https://github.com/jaredhanson/passport-local/issues/155

сессия: ложь должна быть в

passport.authenticate('local', {session:false})
Была ли эта страница полезной?
0 / 5 - 0 рейтинги