Я попробовал этот пример кода 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?
Это будет небезопасно?
Я также понял, что сеансы используются всегда, даже если в параметрах стратегии установлено значение 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})
Самый полезный комментарий
Немного поздний ответ, но как ссылка для всех остальных:
Опция
sessions
описанная в файле readme, кажется неправильной ( см. PR, чтобы исправить это ).Вместо этого его нужно добавить в инициализацию промежуточного программного обеспечения
passport.authenticate
( источник ):