Локальная стратегия Passport.js, но с пользовательскими параметрами идентификации - PullRequest
0 голосов
/ 16 декабря 2018

Я настраиваю локальную стратегию аутентификации для своего веб-приложения, и у меня возникают некоторые проблемы с тем, как я собираюсь ее реализовать.

Я прочитал документы Passport и увидел несколько примеров, ноЯ не нашел никакой информации по этой конкретной проблеме, которая у меня есть.Итак, для начала я знаю, что Passport ищет значения по умолчанию req.body.username и req.body.password.Я также знаю, что если это не имена ключей, которые вы хотите передать, вы можете поменять их местами, используя первый параметр конструктора LocalStrategy, например: new LocalStrategy({ usernameField: 'otherUsername', passwordField: 'otherPassword' }, (username, password, done) => { ... })

Моя проблема на путиЯ передаю учетные данные пользователя.Из моего интерфейса я шифрую имя пользователя и пароль пользователя в один объект в теле (я знаю, что тело все равно шифруется, но это был еще один уровень только для меня), а затем я надеялся манипулировать данными, прежде чем передать ихв аттестат.

Итак, резюмируя, я отправляю свои учетные данные в следующем формате:

req.body.login = {username: '...', password: '...'}

, затем дешифрую объект входа в систему и затем извлекаю свойства имени пользователя / пароля для передачи впаспорт.Это возможно?Я чувствую, что так и должно быть, и если это невозможно с локальной стратегией, могу ли я реализовать ее с помощью другой пользовательской стратегии?

Любая помощь приветствуется.Спасибо!

1 Ответ

0 голосов
/ 17 декабря 2018

В случае, если кто-то еще наткнется на это, мне удалось решить мою проблему с помощью passReqToCallback.

LocalStrategy. В вашей конфигурации паспорта передайте это как ваш первый параметр LocalStrategy и обновите первый параметробратный вызов для req: new LocalStrategy({ passReqToCallback: true }, (req, dummyUsername, dummyPassword, done) => { ... }

Теперь вы можете получить доступ к объекту запроса в этой функции, поэтому в моем случае я использовал закодированные параметры, которые я передал, как то, что я искал.

Поскольку Passport все еще ищет имя пользователя и пароль в теле, я передал фиктивные значения из моего внешнего интерфейса, поэтому Passport не считает, что учетные данные отсутствуют.

...