[МУЗЫКА]
В этом упражнении мы рассмотрим использование экспресс-сессий.
Мы настроим промежуточное программное обеспечение express-sessions, а
затем промежуточное программное обеспечение хранилища файлов express-sessions.
А затем настройте наше приложение на использование экспресс-сессий, а не на
использование их файлов cookie, как мы делали в предыдущем упражнении.
Мы также увидим, как сама информация о сеансе отслеживается под
серверной стороне.
Чтобы начать работу с этим упражнением,
перейдите в папку ConfusionServer в терминале или
командном окне, а затем установите экспресс-сеанс.
Поэтому, чтобы сделать это, введите npm install express-session,
а затем хранилище файлов сеанса.
Потому что мы будем использовать хранилище файлов для сохранения информации о сеансе.
Таким образом, установим модуль магазина сеансов здесь для этой цели.
Как только они установлены, и, как вы можете видеть прямо сейчас,
я использую express-session 1.15.6 и
session-file-storage 1.2.0 в этом курсе.
Как только они будут установлены, давайте перейдем к нашему приложению ConfusionServer.
Перейдя в приложение ConfusionServer,
здесь, давайте теперь импортируем экспресс-сеанс.
Так что скажем, var сессия требует, экспресс-сессия.
И var FileStore = требуется
сеанс -хранилище файлов.
И это принимает сеанс в качестве параметров,
этот сеанс ссылается на это, что мы только что импортировали здесь.
Теперь, как только мы это сделаем, тогда мы спустимся в наш код здесь,
а затем мы увидим вместо CookieParser.
Поэтому я собираюсь прокомментировать CookieParser оттуда, а
затем я буду использовать Session здесь.
И тогда мы установим сеанс с
различными вариантами, скажем имя,
я просто использую случайный идентификатор сеанса, а затем, Секрет.
Я воспользуюсь секретом, который я использовал ранее.
Так что позвольте мне просто скопировать эту строку там.
И затем, Сохранить,
Вкл, Неинициализированный сохранить ложь.
Пересадить, ложно.
Тезисы не будут сильно отличаться от простого приложения, которое мы пишем в
данный момент.
И тогда мы скажем, что магазин является новым,
FileStore, который мы объявили ранее.
Вот оно.
Теперь мое промежуточное программное обеспечение сеанса настроено, чтобы использовать наше приложение.
Теперь, как я уже упоминал, это промежуточное программное обеспечение сеанса добавит этот
req.session в сообщение запроса,
поэтому я собираюсь сделать консольный журнал req.session, чтобы увидеть, что он содержит.
И затем, ниже здесь, вместо того, чтобы проверять пользователя req назначить куки,
я собираюсь проверить req.session.user здесь.
А потом мы посмотрим на заголовок авторизации и так далее.
Вся эта часть останется точно такой же, как и раньше.
Но здесь, вместо того, чтобы настраивать куки, я здесь настрою,
вместо того, чтобы настраивать куки, поэтому вместо использования res.cookie здесь
мы скажем, req.session.user = to 'admin'.
Таким образом, мы собираемся настроить свойство пользователя
на req-сессии для администратора здесь, а затем перейти вперед с этого момента.
Таким образом, остальная часть кода здесь останется точно таким же, как и раньше,
здесь не будет никаких изменений.
И принимайте прямо там, мы будем проверять req.session,
пользователь, admin или нет?
Так что это проверка, которую мы будем делать здесь.
Вот оно.
Это изменения, которые нам нужно сделать
в нашем приложении, чтобы использовать сеансы вместо подписанных файлов cookie.
Давайте сохраним изменения, а затем посмотрим на эту версию нашего экспресс-сервера.
Возвращаясь к нашему терминалу или командному окну, давайте перезапустим наш
сервер, если вы сервер запущен, просто остановите его и перезапустите сервер.
А потом, как только сервер будет запущен,
мы пойдем к почтальону и сделаем, если вы захотите.
Пойду к почтальону, позволь мне прояснить все эти вещи,
мы очистим заголовки, очистим разрешение.
И тогда я перейду к файлам cookie, и
я собираюсь удалить этот пользовательский файл cookie, потому что этот файл больше не действителен.
А затем, давайте отправим запрос на местные блюда хозяина.
И тогда, как мы ожидаем, он возвращается, говоря: Вы не аутентифицированы.
Теперь давайте аутентифицируем себя, используя обычную аутентификацию.
Так что скажем, админ, Пароль.
И тогда мы обновим запрос, а
затем отправим запрос GET в ту же точку.
И затем мы получаем ответ от нашего сервера.
Теперь обратите внимание, что в заголовках, теперь вы увидите снова, что он сказал печенье здесь.
Теперь это было вызвано хранилищем сеансов здесь.
И, когда вы смотрите на файлы cookie, вы видите, что был другой файл cookie, который
установлен здесь, и имя - идентификатор сеанса.
Итак, это имя, которое мы даем для нашего сеанса там, так
что это идентификатор сеанса, который мы используем здесь.
И если вы нажмете на куки, вы заметите, что идентификатор сеанса находится прямо там.
А затем, это детали того, что находится внутри этого печенья.
Таким образом, вы можете заметить целую кучу информации и дату истечения срока
действия файла cookie и так далее.
Возможно, это не имеет большого смысла для вас в данный момент, но оно существует там.
Теперь позвольте мне прояснить разрешение.
А также из заголовка позвольте мне удалить этот заголовок авторизации.
И тогда я повторно отправлю запрос, и
вы заметите, что этот запрос будет правильно обслуживаться и сейчас.
Из-за того, что этот файл cookie существует,
и этот файл будет включен в исходящий запрос.
И серверная сторона сопоставит это с соответствующим сеансом.
Таким образом, сервер понимает, что это авторизованный пользователь, и
отправит ответ обратно.
Теперь, перейдя к нашей консоли сервера в терминале или окне команды,
вы заметили, что, Информация печатается на стороне сервера.
Видишь ли, вы помните, что я регистрировал req.session здесь.
Таким образом, сначала содержится req.session.
И тогда он говорит, GET блюда для одного не действительны.
На этом этапе вы отправляете соответствующий заголовок авторизации.
И поэтому ваш запрос успешно.
Но обратите внимание, что выставляется на сессии в следующем запросе.
Напомним, что я удалил заголовок авторизации, а затем отправил запрос.
Но обратите внимание, что здесь содержится rec.session.
В частности, обратите внимание, что
теперь он содержит это пользовательское поле с администратором на месте.
Таким образом, это то, что сервер получает от нашего клиента в файле cookie.
И сам файл cookie содержит всю эту информацию здесь.
Итак, сервер признает, что это действительный пользователь, а
затем отправляет обратно результаты с этой серверной стороны.
Отправляясь к
почтальону, давайте еще раз посмотрим на детали того, что находится внутри печенья.
Поэтому, когда вы открываете куки здесь,
вы снова видите все детали информации внутри куки здесь.
Если вы посмотрите на свой редактор, то теперь вы увидите, что в вашем редакторе
есть новая папка, называемая сеансами, которая была создана здесь.
Теперь это потому, что мы использовали файловое хранилище, чтобы
отслеживать все наши сеансы.
Теперь это одна из причин, почему я использую хранилище файлов, чтобы я мог показать вам, что
хранится в файле сеанса на моей стороне сервера.
Поэтому, если вы откроете этот файл здесь с длинным именем там
, вы увидите внутри, информация о сеансе хранится здесь.
Поэтому, если вы просматриваете эту информацию о сеансе, обратите внимание, в частности,
это начальное поле, которое находится на стороне сервера.
Таким образом, здесь ваш сервер отслеживает всю эту информацию на стороне сервера.
Теперь этот файл cookie сам распознается сервером,
так как клиент включает этот файл cookie во входящий запрос.
Теперь он может войти в хранилище сеансов, а затем получить информацию,
а затем загрузить это на req.sessions.
И, следовательно, req.session содержит эту конкретную информацию, в
которой мой сервер использует для перекрестной проверки, чтобы убедиться, что
мой клиент является авторизованным клиентом.
То есть о сеансах.
С этим мы завершаем это упражнение.
В этом упражнении
мы видели, как мы можем настроить наше экспресс-приложение для использования сеансов.
И мы также увидели, как мы используем файловое хранилище, чтобы отслеживать наши сеансы.
Это хорошее время для вас сделать комментарий GET с
первой частью экспресс-сессий сообщения.
[ МУЗЫКА]