1
00:00:00,000 --> 00:00:04,514
[МУЗЫКА]

2
00:00:04,514 --> 00:00:09,803
В этом упражнении мы рассмотрим использование экспресс-сессий.

3
00:00:09,803 --> 00:00:13,115
Мы настроим промежуточное программное обеспечение express-sessions, а

4
00:00:13,115 --> 00:00:16,356
затем промежуточное программное обеспечение хранилища файлов express-sessions.

5
00:00:16,356 --> 00:00:21,315
А затем настройте наше приложение на использование экспресс-сессий, а не на

6
00:00:21,315 --> 00:00:25,885
использование их файлов cookie, как мы делали в предыдущем упражнении.

7
00:00:25,885 --> 00:00:30,870
Мы также увидим, как сама информация о сеансе отслеживается под

8
00:00:30,870 --> 00:00:32,145
серверной стороне.

9
00:00:33,750 --> 00:00:36,556
Чтобы начать работу с этим упражнением,

10
00:00:36,556 --> 00:00:40,672
перейдите в папку ConfusionServer в терминале или

11
00:00:40,672 --> 00:00:45,643
командном окне, а затем установите экспресс-сеанс.

12
00:00:45,643 --> 00:00:52,672
Поэтому, чтобы сделать это, введите npm install express-session,

13
00:00:52,672 --> 00:00:56,678
а затем хранилище файлов сеанса.

14
00:00:58,792 --> 00:01:03,320
Потому что мы будем использовать хранилище файлов для сохранения информации о сеансе.

15
00:01:03,320 --> 00:01:08,623
Таким образом, установим модуль магазина сеансов здесь для этой цели.

16
00:01:08,623 --> 00:01:13,399
Как только они установлены, и, как вы можете видеть прямо сейчас,

17
00:01:13,399 --> 00:01:17,008
я использую express-session 1.15.6 и

18
00:01:17,008 --> 00:01:21,430
session-file-storage 1.2.0 в этом курсе.

19
00:01:21,430 --> 00:01:26,397
Как только они будут установлены, давайте перейдем к нашему приложению ConfusionServer.

20
00:01:27,510 --> 00:01:31,868
Перейдя в приложение ConfusionServer,

21
00:01:31,868 --> 00:01:36,921
здесь, давайте теперь импортируем экспресс-сеанс.

22
00:01:36,921 --> 00:01:44,414
Так что скажем, var сессия требует, экспресс-сессия.

23
00:01:46,639 --> 00:01:53,560
И var FileStore = требуется

24
00:01:53,560 --> 00:01:59,908
сеанс -хранилище файлов.

25
00:02:02,812 --> 00:02:07,064
И это принимает сеанс в качестве параметров,

26
00:02:07,064 --> 00:02:13,830
этот сеанс ссылается на это, что мы только что импортировали здесь.

27
00:02:13,830 --> 00:02:18,970
Теперь, как только мы это сделаем, тогда мы спустимся в наш код здесь,

28
00:02:18,970 --> 00:02:22,490
а затем мы увидим вместо CookieParser.

29
00:02:22,490 --> 00:02:26,598
Поэтому я собираюсь прокомментировать CookieParser оттуда, а

30
00:02:26,598 --> 00:02:33,401
затем я буду использовать Session здесь.

31
00:02:36,481 --> 00:02:41,823
И тогда мы установим сеанс с

32
00:02:41,823 --> 00:02:47,175
различными вариантами, скажем имя,

33
00:02:50,402 --> 00:02:56,909
я просто использую случайный идентификатор сеанса, а затем, Секрет.

34
00:02:58,871 --> 00:03:02,880
Я воспользуюсь секретом, который я использовал ранее.

35
00:03:02,880 --> 00:03:06,493
Так что позвольте мне просто скопировать эту строку там.

36
00:03:06,493 --> 00:03:11,981
И затем, Сохранить,

37
00:03:13,422 --> 00:03:21,119
Вкл, Неинициализированный сохранить ложь.

38
00:03:27,180 --> 00:03:28,390
Пересадить, ложно.

39
00:03:28,390 --> 00:03:32,198
Тезисы не будут сильно отличаться от простого приложения, которое мы пишем в

40
00:03:32,198 --> 00:03:33,330
данный момент.

41
00:03:33,330 --> 00:03:37,604
И тогда мы скажем, что магазин является новым,

42
00:03:39,643 --> 00:03:42,497
FileStore, который мы объявили ранее.

43
00:03:45,441 --> 00:03:46,330
Вот оно.

44
00:03:46,330 --> 00:03:53,330
Теперь мое промежуточное программное обеспечение сеанса настроено, чтобы использовать наше приложение.

45
00:03:53,330 --> 00:03:58,295
Теперь, как я уже упоминал, это промежуточное программное обеспечение сеанса добавит этот

46
00:03:58,295 --> 00:04:03,560
req.session в сообщение запроса,

47
00:04:03,560 --> 00:04:08,630
поэтому я собираюсь сделать консольный журнал req.session, чтобы увидеть, что он содержит.

48
00:04:08,630 --> 00:04:13,910
И затем, ниже здесь, вместо того, чтобы проверять пользователя req назначить куки,

49
00:04:13,910 --> 00:04:18,370
я собираюсь проверить req.session.user здесь.

50
00:04:19,390 --> 00:04:23,620
А потом мы посмотрим на заголовок авторизации и так далее.

51
00:04:23,620 --> 00:04:27,460
Вся эта часть останется точно такой же, как и раньше.

52
00:04:27,460 --> 00:04:32,760
Но здесь, вместо того, чтобы настраивать куки, я здесь настрою,

53
00:04:32,760 --> 00:04:38,052
вместо того, чтобы настраивать куки, поэтому вместо использования res.cookie здесь

54
00:04:38,052 --> 00:04:45,470
мы скажем, req.session.user = to 'admin'.

55
00:04:45,470 --> 00:04:50,030
Таким образом, мы собираемся настроить свойство пользователя

56
00:04:50,030 --> 00:04:55,510
на req-сессии для администратора здесь, а затем перейти вперед с этого момента.

57
00:04:55,510 --> 00:04:59,090
Таким образом, остальная часть кода здесь останется точно таким же, как и раньше,

58
00:04:59,090 --> 00:05:01,030
здесь не будет никаких изменений.

59
00:05:01,030 --> 00:05:06,240
И принимайте прямо там, мы будем проверять req.session,

60
00:05:09,462 --> 00:05:11,770
пользователь, admin или нет?

61
00:05:11,770 --> 00:05:14,340
Так что это проверка, которую мы будем делать здесь.

62
00:05:14,340 --> 00:05:15,360
Вот оно.

63
00:05:15,360 --> 00:05:18,820
Это изменения, которые нам нужно сделать

64
00:05:18,820 --> 00:05:23,850
в нашем приложении, чтобы использовать сеансы вместо подписанных файлов cookie.

65
00:05:23,850 --> 00:05:30,040
Давайте сохраним изменения, а затем посмотрим на эту версию нашего экспресс-сервера.

66
00:05:30,040 --> 00:05:34,480
Возвращаясь к нашему терминалу или командному окну, давайте перезапустим наш

67
00:05:35,600 --> 00:05:39,860
сервер, если вы сервер запущен, просто остановите его и перезапустите сервер.

68
00:05:40,870 --> 00:05:42,730
А потом, как только сервер будет запущен,

69
00:05:42,730 --> 00:05:48,600
мы пойдем к почтальону и сделаем, если вы захотите.

70
00:05:48,600 --> 00:05:56,350
Пойду к почтальону, позволь мне прояснить все эти вещи,

71
00:05:56,350 --> 00:06:01,970
мы очистим заголовки, очистим разрешение.

72
00:06:01,970 --> 00:06:03,630
И тогда я перейду к файлам cookie, и

73
00:06:03,630 --> 00:06:08,540
я собираюсь удалить этот пользовательский файл cookie, потому что этот файл больше не действителен.

74
00:06:08,540 --> 00:06:16,030
А затем, давайте отправим запрос на местные блюда хозяина.

75
00:06:16,030 --> 00:06:21,160
И тогда, как мы ожидаем, он возвращается, говоря: Вы не аутентифицированы.

76
00:06:21,160 --> 00:06:24,520
Теперь давайте аутентифицируем себя, используя обычную аутентификацию.

77
00:06:24,520 --> 00:06:29,483
Так что скажем, админ, Пароль.

78
00:06:29,483 --> 00:06:32,223
И тогда мы обновим запрос, а

79
00:06:32,223 --> 00:06:35,740
затем отправим запрос GET в ту же точку.

80
00:06:35,740 --> 00:06:39,400
И затем мы получаем ответ от нашего сервера.

81
00:06:39,400 --> 00:06:46,000
Теперь обратите внимание, что в заголовках, теперь вы увидите снова, что он сказал печенье здесь.

82
00:06:46,000 --> 00:06:52,500
Теперь это было вызвано хранилищем сеансов здесь.

83
00:06:52,500 --> 00:06:57,492
И, когда вы смотрите на файлы cookie, вы видите, что был другой файл cookie, который

84
00:06:57,492 --> 00:07:02,570
установлен здесь, и имя - идентификатор сеанса.

85
00:07:02,570 --> 00:07:06,398
Итак, это имя, которое мы даем для нашего сеанса там, так

86
00:07:06,398 --> 00:07:09,744
что это идентификатор сеанса, который мы используем здесь.

87
00:07:11,172 --> 00:07:16,880
И если вы нажмете на куки, вы заметите, что идентификатор сеанса находится прямо там.

88
00:07:16,880 --> 00:07:22,102
А затем, это детали того, что находится внутри этого печенья.

89
00:07:22,102 --> 00:07:26,816
Таким образом, вы можете заметить целую кучу информации и дату истечения срока

90
00:07:26,816 --> 00:07:28,940
действия файла cookie и так далее.

91
00:07:28,940 --> 00:07:33,703
Возможно, это не имеет большого смысла для вас в данный момент, но оно существует там.

92
00:07:33,703 --> 00:07:38,110
Теперь позвольте мне прояснить разрешение.

93
00:07:38,110 --> 00:07:42,140
А также из заголовка позвольте мне удалить этот заголовок авторизации.

94
00:07:42,140 --> 00:07:45,312
И тогда я повторно отправлю запрос, и

95
00:07:45,312 --> 00:07:51,094
вы заметите, что этот запрос будет правильно обслуживаться и сейчас.

96
00:07:51,094 --> 00:07:54,061
Из-за того, что этот файл cookie существует,

97
00:07:54,061 --> 00:07:58,250
и этот файл будет включен в исходящий запрос.

98
00:07:58,250 --> 00:08:01,400
И серверная сторона сопоставит это с соответствующим сеансом.

99
00:08:02,922 --> 00:08:07,375
Таким образом, сервер понимает, что это авторизованный пользователь, и

100
00:08:07,375 --> 00:08:10,042
отправит ответ обратно.

101
00:08:10,042 --> 00:08:17,004
Теперь, перейдя к нашей консоли сервера в терминале или окне команды,

102
00:08:17,004 --> 00:08:23,080
вы заметили, что, Информация печатается на стороне сервера.

103
00:08:23,080 --> 00:08:27,460
Видишь ли, вы помните, что я регистрировал req.session здесь.

104
00:08:27,460 --> 00:08:30,780
Таким образом, сначала содержится req.session.

105
00:08:30,780 --> 00:08:36,940
И тогда он говорит, GET блюда для одного не действительны.

106
00:08:36,940 --> 00:08:43,620
На этом этапе вы отправляете соответствующий заголовок авторизации.

107
00:08:43,620 --> 00:08:48,365
И поэтому ваш запрос успешно.

108
00:08:48,365 --> 00:08:53,080
Но обратите внимание, что выставляется на сессии в следующем запросе.

109
00:08:53,080 --> 00:08:58,080
Напомним, что я удалил заголовок авторизации, а затем отправил запрос.

110
00:08:58,080 --> 00:09:00,960
Но обратите внимание, что здесь содержится rec.session.

111
00:09:00,960 --> 00:09:03,088
В частности, обратите внимание, что

112
00:09:03,088 --> 00:09:08,129
теперь он содержит это пользовательское поле с администратором на месте.

113
00:09:09,280 --> 00:09:15,120
Таким образом, это то, что сервер получает от нашего клиента в файле cookie.

114
00:09:15,120 --> 00:09:18,690
И сам файл cookie содержит всю эту информацию здесь.

115
00:09:18,690 --> 00:09:22,987
Итак, сервер признает, что это действительный пользователь, а

116
00:09:22,987 --> 00:09:27,249
затем отправляет обратно результаты с этой серверной стороны.

117
00:09:27,249 --> 00:09:28,337
Отправляясь к

118
00:09:28,337 --> 00:09:32,220
почтальону, давайте еще раз посмотрим на детали того, что находится внутри печенья.

119
00:09:32,220 --> 00:09:34,137
Поэтому, когда вы открываете куки здесь,

120
00:09:34,137 --> 00:09:39,103
вы снова видите все детали информации внутри куки здесь.

121
00:09:39,103 --> 00:09:43,026
Если вы посмотрите на свой редактор, то теперь вы увидите, что в вашем редакторе

122
00:09:43,026 --> 00:09:48,140
есть новая папка, называемая сеансами, которая была создана здесь.

123
00:09:48,140 --> 00:09:52,320
Теперь это потому, что мы использовали файловое хранилище, чтобы

124
00:09:52,320 --> 00:09:54,130
отслеживать все наши сеансы.

125
00:09:54,130 --> 00:09:58,180
Теперь это одна из причин, почему я использую хранилище файлов, чтобы я мог показать вам, что

126
00:09:58,180 --> 00:10:03,320
хранится в файле сеанса на моей стороне сервера.

127
00:10:03,320 --> 00:10:08,430
Поэтому, если вы откроете этот файл здесь с длинным именем там

128
00:10:08,430 --> 00:10:13,890
, вы увидите внутри, информация о сеансе хранится здесь.

129
00:10:13,890 --> 00:10:19,460
Поэтому, если вы просматриваете эту информацию о сеансе, обратите внимание, в частности,

130
00:10:19,460 --> 00:10:22,880
это начальное поле, которое находится на стороне сервера.

131
00:10:22,880 --> 00:10:27,930
Таким образом, здесь ваш сервер отслеживает всю эту информацию на стороне сервера.

132
00:10:27,930 --> 00:10:32,650
Теперь этот файл cookie сам распознается сервером,

133
00:10:32,650 --> 00:10:36,630
так как клиент включает этот файл cookie во входящий запрос.

134
00:10:36,630 --> 00:10:41,330
Теперь он может войти в хранилище сеансов, а затем получить информацию,

135
00:10:41,330 --> 00:10:44,870
а затем загрузить это на req.sessions.

136
00:10:44,870 --> 00:10:49,800
И, следовательно, req.session содержит эту конкретную информацию, в

137
00:10:49,800 --> 00:10:54,810
которой мой сервер использует для перекрестной проверки, чтобы убедиться, что

138
00:10:54,810 --> 00:10:57,710
мой клиент является авторизованным клиентом.

139
00:10:57,710 --> 00:11:00,010
То есть о сеансах.

140
00:11:00,010 --> 00:11:03,230
С этим мы завершаем это упражнение.

141
00:11:03,230 --> 00:11:04,100
В этом упражнении

142
00:11:04,100 --> 00:11:08,630
мы видели, как мы можем настроить наше экспресс-приложение для использования сеансов.

143
00:11:08,630 --> 00:11:13,751
И мы также увидели, как мы используем файловое хранилище, чтобы отслеживать наши сеансы.

144
00:11:13,751 --> 00:11:18,360
Это хорошее время для вас сделать комментарий GET с

145
00:11:18,360 --> 00:11:22,291
первой частью экспресс-сессий сообщения.

146
00:11:22,291 --> 00:11:25,521
[ МУЗЫКА]