В предыдущих уроках
мы видели различные стратегии аутентификации пользователей.
Мы начали с обычной аутентификации,
а затем перешли к файлам cookie и экспресс-сеансам
как способ аутентификации и отслеживания пользователей.
В этом уроке мы рассмотрим Passport,
модуль узла, который делает аутентификацию довольно простой
, ненавязчивой и простой для настройки в вашем приложении.
Passport - это не
что иное, как промежуточное программное обеспечение аутентификации, которое поддерживает различные стратегии, которые могут быть использованы для аутентификации пользователей,
включая локальную стратегию, такую как использование имени пользователя и пароля,
или даже стороннюю аутентификацию или использование OAuth или OAuth 2.0,
например, использование Facebook, Twitter,
или Google+ и так далее.
Мы рассмотрим некоторые детали о Passport,
локальная аутентификация поддерживается Passport.
И в упражнении, которое следует,
мы обновим наше приложение, чтобы использовать
модули Passport и Passport-Local Node для включения.
локальная аутентификация с использованием имени пользователя и пароля.
Итак, как я уже говорил немного ранее,
Passport является очень полезным промежуточным программным обеспечением аутентификации для приложений Node.js.
Это упрощает реализацию аутентификации.
Как мы уже видели в предыдущих упражнениях,
аутентификация включает в себя множество повторяющихся кодов и повторяющихся задач обработки ошибок
и разработки способов проверки
подлинности пользователя, а затем аутентификации пользователя и так далее.
Все это упрощается в Passport с помощью
различных стратегий, которые можно использовать для аутентификации пользователей.
Вы можете использовать локальную стратегию, например, которая основана на
регистрации пользователей в вашей системе с использованием имени пользователя и пароля,
а затем аутентификации их с использованием имени пользователя и пароля.
Passport также поддерживает аутентификацию на основе OpenID
или аутентификацию на основе OAuth или OAuth 2.0,
как поддерживается сторонними аутентификаторами, такими как Facebook
, Twitter, Google+ и так далее.
Мы также можем использовать то, что называется
JSON веб-токенов в качестве другого способа аутентификации, называемого токеном аутентификации.
Мы рассмотрим аутентификацию на основе токенов в более поздней части этого урока.
Кроме того, Passport поддерживает сеансы.
Как мы уже видели в предыдущем упражнении и предыдущем уроке,
экспресс-сеансы — это простой способ отслеживания пользователей
на стороне сервера и обслуживания входящих запросов от клиентов.
Для использования Passport, конечно,
мы установим модуль Passport.
В следующем упражнении мы также
установим модуль Passport-Local для
обеспечения локальной стратегии аутентификации пользователей.
Использование Passport в нашем приложении достаточно просто.
На маршрутах, по которым мы хотим выполнить аутентификацию,
мы просто указываем паспортную аутентификацию, а затем указываем
конкретную стратегию аутентификации, которую мы хотим использовать для аутентификации пользователя.
В качестве примера здесь,
вы видите, что мы применяем
локальную аутентификацию, говоря паспорт аутентифицировать и локально.
И поэтому он использует локальную стратегию для аутентификации пользователей.
Если аутентификация прошла успешно,
то промежуточное программное обеспечение переходит к следующему шагу,
где мы можем дополнительно обработать входящий запрос.
Таким образом, после завершения успешной аутентификации паспорта пользователя,
Passport сам добавляет свойство пользователя в сообщение запроса.
Таким образом, req.user становится доступным для нас с информацией пользователя там,
которую мы можем впоследствии использовать в
нашем экспресс-приложении для обработки запроса, поступающего от конкретных пользователей.
Таким образом, это легко помогает нам определить, какой клиент отправил запрос в
наше приложение и, следовательно
, обслуживать запрос соответствующим образом на основе личности пользователя.
Вместе с Passport мы установим
еще один связанный с паспортом модуль под названием Passport-Local.
Passport-Local поддерживает стратегию,
называемую локальной стратегией аутентификации пользователей
со стандартной комбинацией паролей имени пользователя.
Таким образом, мы настраиваем схему пользователя,
как мы делали раньше,
а затем используем пользовательскую схему или модель для отслеживания имени пользователя
и пароля, а затем Passport-Local зависит от этого, чтобы проверить имя пользователя и пароль.
Итак, чтобы установить его снова,
будучи модулем Node,
мы устанавливаем его с помощью стандартной процедуры установки модуля Passport-Local Node.
После установки модуля Passport-Local Node,
нам нужно указать локальную стратегию и как она фактически используется в Passport.
Итак, чтобы указать локальную стратегию, скажем:
passport.use, и так это позволит нам указать локальную стратегию для использования.
Таким образом, установив Passport-Local,
мы объявим новую локальную стратегию, а затем поставим
соответствующую функцию проверки, которая используется для проверки пользователя.
Если вы используете MongoDB в качестве бэк-энд-магазина, то,
чтобы помочь нам со стратегией Passport-Local,
есть еще один модуль, называемый как Passport-Local Mongoose.
Модуль Passport-Local Mongoose
предоставляет плагин Mongoose, который упростит имя пользователя и пароль входа.
Устанавливая плагин Passport-Local Mongoose, а
затем используя его, когда мы определяем пользовательскую схему
и модель, и тем самым используя поддержку модуля Passport-Local
Mongoose, этот плагин mongoose добавляет в имя пользователя и
зашифрованный способ хранения пароля внутри нашего пользователя модель.
Шифрование выполняется с помощью хэширования
пароля, который мы используем для регистрации пользователей,
а сам хэш использует солевое поле.
Поэтому, если вы знаете что-нибудь о криптографии, в криптографии
соль - это случайная строка, которая используется для выполнения
операции хеширования пароля для хранения.
Таким образом, хэшированный пароль сам фактически хранится в нашей базе данных MongoDB.
Фактический пароль не сохраняется.
Таким образом, когда пользователь пытается аутентифицироваться, используя имя пользователя и пароль,
пароль будет снова хэширован, а затем сравнивать с
хэшированными паролями, хранящимися в нашей базе данных, и
все это предоставляется плагином Mongoose, Passport-Local Mongoose.
Кроме того, Passport-Local Mongoose также добавляет дополнительные методы, которые
очень полезны для настройки стратегии Passport-Local.
Таким образом, в нашем приложении, когда мы определяем пользовательскую схему и модель,
мы импортируем Passport-Local Mongoose, а затем добавим
в качестве плагина для пользовательской схемы.
Этот модуль Passport-Local Mongoose автоматически,
как я сказал, добавляет поле имени пользователя,
а также хешированное поле хранения пароля, используя значение соли, которое он использует для хеширования,
а также предоставляет дополнительные методы, которые позволяют
нам настроить нашу стратегию Passport-Local.
Если мы используем модуль Passport-Local Mongoose,
то локальная стратегия,
Passport-Local Mongoose плагин поддерживает на
модели пользователя метод аутентификации, который будет автоматически выполнять аутентификацию.
На предыдущем слайде я показал вам, как мы будем реализовывать местную стратегию.
Теперь это автоматически предоставляется для вас Passport-Local Mongoose,
просто говоря новый localstrategy user.authenticate.
Тогда нам не нужно явно писать код аутентификации для локальной стратегии.
Кроме того, если вы используете сеансы, поддерживаемые Passport
, то для поддержки сеансов
данные пользователя должны быть сериализованы для
хранения с информацией о сеансе на стороне сервера, а затем,
когда запрос поступает,
из идентификатора сеанса,
информация о пользователе необходимо десериализовать, чтобы извлечь
информацию о пользователе из нашей информации о сеансе, которая хранится на стороне сервера.
Теперь эта
операция сериализации и десериализации уже поддерживается Passport-Local Mongoose через
пользователя сериализации и
десериализации пользовательских методов, доступных из плагина Passport-Local Mongoose.
Таким образом, увидев это,
мы теперь увидим в упражнении, как легко настроить
локальную стратегию аутентификации пользователей с помощью
модулей Passport, Passport-Local и Pasport-Local Mongoose Node.