1
00:00:03,680 --> 00:00:08,435
Теперь, когда мы понимаем куки и экспресс-сеансы,

2
00:00:08,435 --> 00:00:11,895
в этом упражнении давайте рассмотрим куки, в частности.

3
00:00:11,895 --> 00:00:15,490
Мы увидим, как мы можем использовать куки-парсер промежуточного программного обеспечения

4
00:00:15,490 --> 00:00:22,185
для настройки и обработки куки в нашем экспресс-приложении.

5
00:00:22,185 --> 00:00:26,900
Возвращаясь к нашему приложению

6
00:00:26,900 --> 00:00:28,695
Extract Server Express, над которым мы работали до сих пор,

7
00:00:28,695 --> 00:00:32,420
вы заметите в верхней части, что куки-парсер

8
00:00:32,420 --> 00:00:37,200
уже включен в наше экспресс-приложение.

9
00:00:37,200 --> 00:00:40,150
Если вам нужно явно установить куки-парсер,

10
00:00:40,150 --> 00:00:45,230
вам просто нужно ввести «npm install куки-парсер минус сохранение».

11
00:00:45,230 --> 00:00:48,740
Но так как наш Express Generator уже включил

12
00:00:48,740 --> 00:00:52,810
куки-парсер в наше экспресс-приложение, которое мы вылетели,

13
00:00:52,810 --> 00:00:56,210
нам не нужно делать этот шаг в этом упражнении.

14
00:00:56,210 --> 00:00:59,430
Итак, вы видите, что куки-парсер уже включен туда,

15
00:00:59,430 --> 00:01:03,910
а затем, если вы прокрутите вниз,

16
00:01:03,910 --> 00:01:08,290
вы увидите, что в коде прямо ниже,

17
00:01:08,290 --> 00:01:13,925
вы увидите, что куки-парсер уже включен в промежуточное программное обеспечение там.

18
00:01:13,925 --> 00:01:16,330
Теперь, для этого куки-парсера,

19
00:01:16,330 --> 00:01:19,885
мы будем использовать подписанные куки в этом упражнении.

20
00:01:19,885 --> 00:01:21,680
Итак, для этого куки-парсера

21
00:01:21,680 --> 00:01:27,580
я собираюсь предоставить секретный ключ в качестве параметра здесь.

22
00:01:27,580 --> 00:01:29,990
Секретным ключом может быть любая строка там,

23
00:01:29,990 --> 00:01:37,450
так что я просто собираюсь поставить строку вроде этой, я скажу 12345-67890.

24
00:01:37,450 --> 00:01:39,915
Это не должно быть ничего значимого,

25
00:01:39,915 --> 00:01:48,650
это просто ключ, который может быть использован

26
00:01:48,650 --> 00:01:53,160
нашим куки-парсером для того, чтобы зашифровать

27
00:01:53,160 --> 00:01:59,560
информацию и подписать куки, которые отправляются с сервера клиенту.

28
00:01:59,560 --> 00:02:05,775
Итак, как только мы настроим наш куки-парсер для обработки подписанных куки,

29
00:02:05,775 --> 00:02:08,805
поэтому в самой авторизации,

30
00:02:08,805 --> 00:02:13,555
так что вы видите, что у нас есть авторизация, которую мы построили здесь.

31
00:02:13,555 --> 00:02:15,130
Теперь, в рамках авторизации,

32
00:02:15,130 --> 00:02:16,735
то, что мы собираемся сделать, это, когда

33
00:02:16,735 --> 00:02:23,385
пользователь впервые попытается получить доступ к серверу,

34
00:02:23,385 --> 00:02:29,870
мы будем ожидать, что пользователь авторизоваться самостоятельно.

35
00:02:29,870 --> 00:02:37,360
После этого мы установим куки на стороне клиента с сервера, а

36
00:02:37,360 --> 00:02:41,350
затем клиент не должен

37
00:02:41,350 --> 00:02:45,420
явно продолжать отправлять основную информацию аутентификации.

38
00:02:45,420 --> 00:02:53,335
Вместо этого клиенту просто нужно будет включить файл cookie в исходящий запрос.

39
00:02:53,335 --> 00:02:56,650
Так как мы используем подписанные куки здесь, поэтому,

40
00:02:56,650 --> 00:03:01,010
когда входящий запрос приходит,

41
00:03:01,010 --> 00:03:04,490
поэтому мы будем обрабатывать это внутри авторизации.

42
00:03:04,490 --> 00:03:08,885
Теперь вы помните, что мы уже установили промежуточное программное обеспечение авторизации здесь.

43
00:03:08,885 --> 00:03:12,980
Таким образом, мы собираемся изменить это промежуточное программное обеспечение авторизации, чтобы использовать

44
00:03:12,980 --> 00:03:17,445
куки вместо заголовка авторизации.

45
00:03:17,445 --> 00:03:20,910
Итак, то, что мы будем делать здесь, это то, что

46
00:03:20,910 --> 00:03:24,710
мы скажем «console.log», а затем

47
00:03:30,340 --> 00:03:33,140
«console.log (req.signedCookies)», чтобы мы увидели, что на самом деле

48
00:03:33,140 --> 00:03:35,790
включено в подписанный файл cookie здесь.

49
00:03:35,790 --> 00:03:38,070
Теперь, также после этого,

50
00:03:38,070 --> 00:03:46,275
мы будем говорить: «Если (! Req.signedCookies.user)».

51
00:03:46,275 --> 00:03:51,635
Пользователь будет свойством, которое мы установим

52
00:03:51,635 --> 00:03:54,440
в подписанном файле cookie, как вы увидите

53
00:03:54,440 --> 00:03:57,520
немного позже, как мы будем настраивать подписанный файл cookie.

54
00:03:57,520 --> 00:04:05,600
Таким образом, если входящий запрос не включает поле пользователя в подписанные куки,

55
00:04:05,600 --> 00:04:09,640
а затем это означает, что пользователь еще не авторизован.

56
00:04:09,640 --> 00:04:11,990
Поэтому в этом случае

57
00:04:11,990 --> 00:04:18,195
мы будем ожидать, что пользователь аутентифицирует себя.

58
00:04:18,195 --> 00:04:23,740
Так что, тогда мы сделаем всю эту часть здесь.

59
00:04:23,740 --> 00:04:27,890
Поэтому обратите внимание, что мы уже делали это

60
00:04:27,890 --> 00:04:32,105
раньше, когда мы обрабатывали заголовок аутентификации.

61
00:04:32,105 --> 00:04:34,630
Итак, мы возьмем всю эту часть,

62
00:04:34,630 --> 00:04:41,805
вплоть до этого «еще» здесь, а затем включим ее внутри.

63
00:04:41,805 --> 00:04:48,260
Итак, по существу, то, что мы указываем здесь, это то, что

64
00:04:49,110 --> 00:04:51,750
позвольте мне отступить.

65
00:04:51,750 --> 00:04:55,100
Как вы видите, я очень особенный в моем отступе

66
00:04:55,100 --> 00:04:59,005
, потому что это делает код более легким для чтения.

67
00:04:59,005 --> 00:05:00,740
Итак, внутри этого if,

68
00:05:00,740 --> 00:05:04,990
так что это конечная точка if этого здесь.

69
00:05:04,990 --> 00:05:11,600
Поэтому мы говорим, если подписанный файл cookie не содержит свойство пользователя на нем,

70
00:05:11,600 --> 00:05:17,960
то мы ожидаем, что пользователь авторизован, включив заголовок авторизации.

71
00:05:17,960 --> 00:05:20,090
Итак, мы будем искать заголовок авторизации.

72
00:05:20,090 --> 00:05:22,760
Если заголовок авторизации недоступен,

73
00:05:22,760 --> 00:05:28,190
то мы просто отклоним пользователя и предложим

74
00:05:28,190 --> 00:05:34,120
пользователю ввести имя пользователя и пароль, как мы делали в предыдущем упражнении.

75
00:05:34,120 --> 00:05:36,600
Если заголовок авторизации включен,

76
00:05:36,600 --> 00:05:41,165
то мы будем обрабатывать заголовок авторизации так же, как мы делали раньше,

77
00:05:41,165 --> 00:05:44,565
и если пользователь является авторизованным пользователем,

78
00:05:44,565 --> 00:05:49,620
напомним, что мы вызвали следующий, чтобы позволить пользователю продолжить вперед.

79
00:05:49,620 --> 00:05:51,480
Теперь на этом этапе,

80
00:05:51,480 --> 00:05:56,685
то, что мы будем делать, мы скажем, что

81
00:05:56,685 --> 00:06:00,380
мы создадим куки на этом этапе.

82
00:06:00,380 --> 00:06:04,725
Так вот где мы будем использовать файл cookie res здесь.

83
00:06:04,725 --> 00:06:07,880
Обратите внимание, что печенье не существует,

84
00:06:07,880 --> 00:06:10,125
поэтому мы скажем «res.cookie».

85
00:06:10,125 --> 00:06:15,275
Как вы можете видеть, сам файл cookie res принимает первую строку имени значения,

86
00:06:15,275 --> 00:06:19,060
строку значения и параметры, параметры cookie.

87
00:06:19,060 --> 00:06:25,820
Установите имя файла cookie значение с заданными параметрами, и параметры включены здесь,

88
00:06:25,820 --> 00:06:27,410
некоторые параметры для файла cookie здесь.

89
00:06:27,410 --> 00:06:31,040
Я собираюсь просто использовать несколько вариантов здесь.

90
00:06:31,040 --> 00:06:37,500
Итак, мы скажем: «res.cookie», а затем я собираюсь настроить файл cookie с именем пользователя.

91
00:06:37,680 --> 00:06:41,890
Теперь обратите внимание, что это причина,

92
00:06:41,890 --> 00:06:45,400
по которой я проверяю req.signedCookies.User там.

93
00:06:45,400 --> 00:06:51,380
Поэтому мы скажем «res.cookie («пользователь»,)» и

94
00:06:51,380 --> 00:06:56,290
поле пользователя, которое я установлю его на «admin», а

95
00:06:56,290 --> 00:07:01,390
затем я настрою это как подписанный файл cookie.

96
00:07:01,390 --> 00:07:03,725
Так что я скажу: «Подписано: правда».

97
00:07:03,725 --> 00:07:06,295
Таким образом, это означает, что мой куки-парсер будет гарантировать

98
00:07:06,295 --> 00:07:10,120
, что этот куки будет подписан и настроен.

99
00:07:10,120 --> 00:07:14,290
Таким образом, это вариант, который я установил для файла cookie res здесь.

100
00:07:14,290 --> 00:07:16,360
Таким образом, это будет включать

101
00:07:16,360 --> 00:07:22,300
это конкретное имя в подписанный файл cookie с этим конкретным значением.

102
00:07:22,300 --> 00:07:26,160
Поэтому я могу проверить это значение здесь.

103
00:07:26,160 --> 00:07:27,770
Поэтому, если этого не существует,

104
00:07:27,770 --> 00:07:36,045
то, конечно, я ожидаю, что пользователь

105
00:07:36,045 --> 00:07:40,190
будет аутентифицироваться, используя базовую аутентификацию, и если обычная аутентификация успешна, я настрою файл cookie здесь и настрою

106
00:07:40,190 --> 00:07:45,440
поле cookie в исходящем ответном сообщении здесь, и

107
00:07:45,440 --> 00:07:49,730
это вызовет для настройки файла cookie на стороне клиента, а затем

108
00:07:49,730 --> 00:07:55,055
все последующие запросы будут включать этот файл cookie в запрос клиента.

109
00:07:55,055 --> 00:08:02,085
Так вот как я обрабатываю тот факт, когда cookie.user не существует.

110
00:08:02,085 --> 00:08:05,120
Там. Если он существует,

111
00:08:05,120 --> 00:08:07,765
то другая часть,

112
00:08:07,765 --> 00:08:11,155
так что это означает, что подписанный файл cookie уже

113
00:08:11,155 --> 00:08:16,415
существует, и свойство пользователя определено на этом,

114
00:08:16,415 --> 00:08:19,810
то в другом

115
00:08:19,810 --> 00:08:33,150
случае я проверю, является ли req.signedCookies.User admin.

116
00:08:33,150 --> 00:08:37,380
Затем это означает, что подписанный файл cookie содержит правильную информацию.

117
00:08:37,380 --> 00:08:39,780
Тогда я скажу следующее.

118
00:08:39,780 --> 00:08:44,800
Таким образом, это означает, что вы разрешите запрос пройти.

119
00:08:46,520 --> 00:08:55,250
В противном случае этот файл cookie недействителен, так как он не содержит этого правильного значения.

120
00:08:55,250 --> 00:08:57,635
Это означает, что это ошибка.

121
00:08:57,635 --> 00:08:59,749
Поэтому в этом случае

122
00:08:59,749 --> 00:09:02,750
мы скажем, что вы не аутентифицированы,

123
00:09:02,750 --> 00:09:12,075
и тогда мы просто вызовем ошибку в этом вопросе.

124
00:09:12,075 --> 00:09:15,640
Теперь мы не собираемся запрашивать пользователя для

125
00:09:15,640 --> 00:09:18,585
сеанса, потому что это должно быть сделано раньше.

126
00:09:18,585 --> 00:09:20,870
Теперь, как правило, этого не произойдет,

127
00:09:20,870 --> 00:09:24,470
потому что если файл cookie уже установлен на стороне клиента,

128
00:09:24,470 --> 00:09:27,005
то он должен включать правильное значение в любом случае.

129
00:09:27,005 --> 00:09:29,850
Но ради полноты

130
00:09:29,850 --> 00:09:35,315
я также включил проверку ошибок else здесь на данный момент. Вот оно.

131
00:09:35,315 --> 00:09:38,210
С помощью этой настройки мы превратили

132
00:09:38,210 --> 00:09:43,710
наше экспресс-приложение в тот, который обрабатывает куки здесь.

133
00:09:43,710 --> 00:09:48,405
Заметьте еще раз, позвольте мне обратить ваше внимание на то, что мы здесь делаем еще раз.

134
00:09:48,405 --> 00:09:50,060
Здесь мы проверяем, чтобы убедиться

135
00:09:50,060 --> 00:09:54,970
, что свойство пользователя в подписанных куки не существует,

136
00:09:54,970 --> 00:09:57,380
или даже подписанный куки сам не существует.

137
00:09:57,380 --> 00:10:02,595
Затем мы будем ожидать, что будет сделано базовое разрешение.

138
00:10:02,595 --> 00:10:04,850
Если авторизация прошла успешно,

139
00:10:04,850 --> 00:10:09,860
я собираюсь настроить файл cookie, используя res.cookie здесь.

140
00:10:09,860 --> 00:10:14,035
Затем все последующие запросы будут нести подписанный файл cookie в любом случае,

141
00:10:14,035 --> 00:10:17,080
а затем я проверю, что подписанный файл cookie является

142
00:10:17,080 --> 00:10:22,905
действительным подписанным файлом cookie и содержит свойство пользователя, которое установлено равным admin.

143
00:10:22,905 --> 00:10:25,680
Если это так, то это авторизованный доступ,

144
00:10:25,680 --> 00:10:27,935
поэтому он позволит продолжить движение вперед.

145
00:10:27,935 --> 00:10:31,920
Если нет, то я поднимаю ошибку на данный момент.

146
00:10:31,920 --> 00:10:39,710
Незначительное исправление, новые версии Node.js ожидают, что вы будете использовать это как

147
00:10:39,710 --> 00:10:47,500
новый buffer.From вместо нового буфера, чтобы справиться с некоторыми проблемами безопасности.

148
00:10:47,500 --> 00:10:53,165
Поэтому просто исправьте эту строку в новый buffer.From. Вот оно.

149
00:10:53,165 --> 00:10:59,600
Давайте сохраним изменения, а затем пойдем и посмотрим на наше приложение в этом Почтальоне.

150
00:10:59,600 --> 00:11:03,310
Если предыдущий сервер запущен,

151
00:11:03,310 --> 00:11:06,155
просто остановите его, введя Control C,

152
00:11:06,155 --> 00:11:09,665
а затем перезапустите сервер, сказав npm start.

153
00:11:09,665 --> 00:11:13,305
Конечно, убедитесь, что ваш сервер MongoDB работает и работает.

154
00:11:13,305 --> 00:11:17,140
В противном случае ваш экспресс-сервер не запустится правильно.

155
00:11:17,140 --> 00:11:19,955
Так что, как только ваш экспресс-сервер запущен,

156
00:11:19,955 --> 00:11:26,250
то пойдем к нашему Почтальон и попробуем подключиться к серверу.

157
00:11:26,250 --> 00:11:30,970
И я продемонстрирую несколько аспектов того, как обрабатываются файлы cookie.

158
00:11:30,970 --> 00:11:32,939
Теперь, отправляясь в почтальон,

159
00:11:32,939 --> 00:11:35,980
позвольте мне прояснить всю эту информацию

160
00:11:35,980 --> 00:11:40,745
от почтальона, а затем мы начнем с основ.

161
00:11:40,745 --> 00:11:44,265
Поэтому позвольте мне попробовать получить доступ к локальному хосту: 3000/блюда.

162
00:11:44,265 --> 00:11:47,335
Теперь, после того, как я все

163
00:11:47,335 --> 00:11:49,460
очищу, я отправлю запрос и сохраню.

164
00:11:49,460 --> 00:11:51,150
И поэтому со стороны сервера

165
00:11:51,150 --> 00:11:53,600
он говорит, что вы не аутентифицированы.

166
00:11:53,600 --> 00:11:55,365
Затем, когда вы смотрите на заголовок,

167
00:11:55,365 --> 00:12:00,350
это просит меня пройти аутентификацию с помощью WWW-Authenticate.

168
00:12:00,350 --> 00:12:05,115
Итак, теперь позвольте мне перейти в авторизацию, а затем настроить базовую авторизацию,

169
00:12:05,115 --> 00:12:08,415
а затем я настрою авторизацию как admin

170
00:12:08,415 --> 00:12:14,200
, а затем пароль, а затем обновить запрос, чтобы заголовок

171
00:12:14,200 --> 00:12:20,090
теперь содержал заголовок авторизации здесь с информацией там.

172
00:12:20,090 --> 00:12:23,900
И затем позвольте мне отправить запрос Git с этой части.

173
00:12:23,900 --> 00:12:25,805
Если я отправлю запрос Git,

174
00:12:25,805 --> 00:12:34,205
то в ответ вы увидите, что запрос Git был успешным.

175
00:12:34,205 --> 00:12:38,300
Обратите внимание также на несколько других вещей.

176
00:12:38,300 --> 00:12:41,060
Вы увидите статус 200 OK.

177
00:12:41,060 --> 00:12:50,805
Обратите внимание также, что файл cookie был установлен на стороне нашего клиента в Postman здесь.

178
00:12:50,805 --> 00:12:53,120
Этот файл cookie содержит информацию.

179
00:12:53,120 --> 00:12:55,420
Посмотрим детали печенья через минуту.

180
00:12:55,420 --> 00:12:57,265
Затем, когда вы смотрите на заголовок,

181
00:12:57,265 --> 00:13:03,130
вы видите в заголовке это значение здесь, говоря Set-Cookie,

182
00:13:03,130 --> 00:13:06,165
а затем эту информацию, которая приходит сюда.

183
00:13:06,165 --> 00:13:10,290
Теперь, если вы внимательно посмотрите на него,

184
00:13:10,290 --> 00:13:13,965
вы увидите что-то здесь говорит, что пользователь равен,

185
00:13:13,965 --> 00:13:18,000
а затем вы видите это значение здесь, admin там.

186
00:13:18,000 --> 00:13:23,845
Итак, вы заметили, что что-то было заключено в куки.

187
00:13:23,845 --> 00:13:26,465
Если вы хотите действительно изучить файл cookie,

188
00:13:26,465 --> 00:13:30,355
перейдите сюда, в Postman, а затем нажмите на эти ключи,

189
00:13:30,355 --> 00:13:37,205
и затем это покажет вам все файлы cookie, которые были настроены на этой стороне клиента.

190
00:13:37,205 --> 00:13:43,365
Тогда, в частности, позвольте мне очистить все эти другие файлы cookie.

191
00:13:43,365 --> 00:13:48,640
Я, вероятно, использовал некоторые из них по какой-то другой причине.

192
00:13:48,640 --> 00:13:51,290
Так что позволь мне просто очистить эти печенья.

193
00:13:51,290 --> 00:13:53,020
В любом случае, если ты их

194
00:13:53,020 --> 00:13:54,355
увидишь, можешь просто оставить их там.

195
00:13:54,355 --> 00:13:56,385
Не большая проблема.

196
00:13:56,385 --> 00:14:00,220
Сосредоточьтесь конкретно на локальном хосте здесь,

197
00:14:00,220 --> 00:14:02,620
а затем вы видите этот файл cookie здесь.

198
00:14:02,620 --> 00:14:03,780
Просто нажмите на файл cookie,

199
00:14:03,780 --> 00:14:08,710
а затем вы увидите фактическое значение внутри файла cookie, который хранится там.

200
00:14:08,710 --> 00:14:12,130
Затем также дата истечения срока действия для этой настройки cookie здесь.

201
00:14:12,130 --> 00:14:15,460
Теперь это значение будет именно то, что вы видели

202
00:14:15,460 --> 00:14:18,890
в наборе cookie, который пришел со стороны сервера.

203
00:14:18,890 --> 00:14:24,620
Теперь это также означает, что в последующих запросах, которые идут,

204
00:14:24,620 --> 00:14:27,365
поэтому, даже если я очищу свою авторизацию,

205
00:14:27,365 --> 00:14:31,010
и даже если я удалю заголовок авторизации,

206
00:14:31,150 --> 00:14:34,225
потому что файл cookie был настроен,

207
00:14:34,225 --> 00:14:37,110
этот файл cookie был настроен на моем локальном хосте,

208
00:14:37,110 --> 00:14:44,335
каждый последующий запрос, поступающий на этот сервер будет включать этот файл cookie.

209
00:14:44,335 --> 00:14:51,000
Поэтому, несмотря на то, что у меня не было бы

210
00:14:57,940 --> 00:15:02,195
настроенных там заголовков, если я отправлю запрос, вы заметите, что запрос Git работает так же, как и прежде, без каких-либо проблем, из-за того, что каждый исходящий запрос будет автоматически включать

211
00:15:02,195 --> 00:15:08,075
этот файл cookie в исходящий запрос от моего Postman Здесь.

212
00:15:08,075 --> 00:15:13,850
Это демонстрирует использование файлов cookie в нашем приложении.

213
00:15:13,850 --> 00:15:18,260
С этим мы видели, как куки могут быть настроены и

214
00:15:18,260 --> 00:15:22,404
обработаны на нашем экспресс-сервере с помощью куки-парсера,

215
00:15:22,404 --> 00:15:25,330
и как мы можем настроить подписанные куки.

216
00:15:25,330 --> 00:15:31,390
Это хорошее время для вас сделать git фиксацию с файлами cookie сообщений.