1
00:00:00,000 --> 00:00:04,514
[音乐]

2
00:00:04,514 --> 00:00:09,803
在本练习中，我们将研究 Express 会话的使用情况。

3
00:00:09,803 --> 00:00:13,115
我们将设置快速会话中间件，

4
00:00:13,115 --> 00:00:16,356
然后设置快速会话文件存储中间件。

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
请转到终端或

11
00:00:40,672 --> 00:00:45,643
命令窗口中的 ConfusionServer 文件夹，然后让我们安装快速会话。

12
00:00:45,643 --> 00:00:52,672
所以要做到这一点，键入 npm 安装快速会话，

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
我在

18
00:01:17,008 --> 00:01:21,430
本课程中使用了快速会话 1.15.6 和会话文件存储 1.2.0。

19
00:01:21,430 --> 00:01:26,397
两者都安装完毕后，让我们进入我们的混合服务器应用程序。

20
00:01:27,510 --> 00:01:31,868
转到混合服务器应用程序，

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 文件 = 需要

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
然后我现在将使用，会话在这里。

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
我只是在这里使用一个随机的会话 ID，然后，秘密。

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
打开，未初始化保存 false。

38
00:03:27,180 --> 00:03:28,390
重新保存，假。

39
00:03:32,198 --> 00:03:33,330
这些与我们目前正在编写的简单应用程序没有太大的区别。

40
00:03:33,330 --> 00:03:37,604
然后我们会说商店是新的，

41
00:03:39,643 --> 00:03:42,497
我们早些时候声明的文件。

42
00:03:45,441 --> 00:03:46,330
就是这样

43
00:03:46,330 --> 00:03:53,330
现在我的会话中间件全部设置为利用我们的应用程序。

44
00:03:53,330 --> 00:03:58,295
现在，正如我所提到的那样，这个会话中间件会将这个

45
00:03:58,295 --> 00:04:03,560
req.session 添加到请求消息中，

46
00:04:03,560 --> 00:04:08,630
所以我要做一个 req.session 的控制台日志，以查看它包含的内容。

47
00:04:08,630 --> 00:04:13,910
然后，在这里下面，而不是检查

48
00:04:13,910 --> 00:04:18,370
请求分配 cookie 用户，我要在这里检查 req.session.user。

49
00:04:19,390 --> 00:04:23,620
然后，我们将看看授权标头，等等。

50
00:04:23,620 --> 00:04:27,460
所有这一部分将保持完全相同的以前。

51
00:04:27,460 --> 00:04:32,760
但是在这里，我将在这里设置的是，

52
00:04:32,760 --> 00:04:38,052
而不是设置 cookie，所以不是在这里使用 res.cookie，

53
00:04:38,052 --> 00:04:45,470
我们会说，req.session.user = “管理员”。

54
00:04:45,470 --> 00:04:50,030
所以我们将在请求

55
00:04:50,030 --> 00:04:55,510
会话上设置用户属性来管理这里，然后从这一点开始。

56
00:04:55,510 --> 00:04:59,090
所以这里的其余代码将保持与以前完全相同，

57
00:04:59,090 --> 00:05:01,030
这里不会有任何变化。

58
00:05:01,030 --> 00:05:06,240
并在那里接受，我们将检查 req.session，

59
00:05:09,462 --> 00:05:11,770
用户，是管理员还是不？

60
00:05:11,770 --> 00:05:14,340
所以这就是我们要在这里做的检查。

61
00:05:14,340 --> 00:05:15,360
就是这样

62
00:05:15,360 --> 00:05:18,820
这些是我们需要对我们的应用

63
00:05:18,820 --> 00:05:23,850
程序进行的更改，以便使用会话代替已签名的 Cookie。

64
00:05:23,850 --> 00:05:30,040
让我们保存更改，然后看看这个版本的快速服务器。

65
00:05:30,040 --> 00:05:34,480
回到我们的终端或命令窗口，让我们重新启动我们的

66
00:05:35,600 --> 00:05:39,860
服务器，如果你的服务器已经运行，只需停止它并重新启动服务器。

67
00:05:40,870 --> 00:05:42,730
然后，一旦服务器启动并运行，

68
00:05:42,730 --> 00:05:48,600
我们会去邮递员，如果你要求的话。

69
00:05:48,600 --> 00:05:56,350
去邮差，让我清楚所有这些事情，

70
00:05:56,350 --> 00:06:01,970
我们会清除标题，我们会清除授权。

71
00:06:01,970 --> 00:06:03,630
然后我会去 cookie，

72
00:06:03,630 --> 00:06:08,540
我要删除这个用户 cookie，因为该 cookie 不再有效。

73
00:06:08,540 --> 00:06:16,030
然后, 让我们发送一个获取请求, 当地主机菜.

74
00:06:16,030 --> 00:06:21,160
然后正如我们所期望的那样，它回来说，你没有被认证。

75
00:06:21,160 --> 00:06:24,520
现在，让我们使用基本身份验证对自己进行身份验证。

76
00:06:24,520 --> 00:06:29,483
所以我们会说，管理员，密码。

77
00:06:29,483 --> 00:06:32,223
然后我们将更新请求，

78
00:06:32,223 --> 00:06:35,740
然后我们将向同一点发送 GET 请求。

79
00:06:35,740 --> 00:06:39,400
然后，我们从我们的服务器端得到回复。

80
00:06:39,400 --> 00:06:46,000
现在，请注意，在标题中，现在你会再次看到它在这里说了 cookie。

81
00:06:46,000 --> 00:06:52,500
现在这是由这里的会话存储造成的。 而

82
00:06:52,500 --> 00:06:57,492
且，当你查看 cookie 时，你会看到

83
00:06:57,492 --> 00:07:02,570
这里已经设置了另一个 cookie，名称是会话 ID。

84
00:07:02,570 --> 00:07:06,398
所以这是我们给我们的会话的名称，所以

85
00:07:06,398 --> 00:07:09,744
这是我们在这里使用的会话 ID。

86
00:07:11,172 --> 00:07:16,880
如果您点击 Cookie，您会注意到会话 ID 就在那里。

87
00:07:16,880 --> 00:07:22,102
然后，这是那个饼干里面的细节。

88
00:07:22,102 --> 00:07:26,816
所以你可以注意到一大堆信息和

89
00:07:26,816 --> 00:07:28,940
cookie 的到期日期，等等。

90
00:07:28,940 --> 00:07:33,703
这对你们来说可能没有多大意义，但它存在于那里。

91
00:07:33,703 --> 00:07:38,110
现在，让我清楚授权。

92
00:07:38,110 --> 00:07:42,140
并且从标题中，让我删除这个授权标头。

93
00:07:42,140 --> 00:07:45,312
然后我将重新发送请求，

94
00:07:45,312 --> 00:07:51,094
你会注意到，即使现在，这个请求也将得到正确的服务。

95
00:07:51,094 --> 00:07:54,061
由于这个 cookie 存在的事实，

96
00:07:54,061 --> 00:07:58,250
并且这个 cookie 将包含在传出请求中。

97
00:07:58,250 --> 00:08:01,400
服务器端会将其映射到适当的会话。

98
00:08:02,922 --> 00:08:07,375
因此，服务器意识到这是一个授权用户，并

99
00:08:07,375 --> 00:08:10,042
将回复答复。

100
00:08:10,042 --> 00:08:17,004
现在去我们的服务器控制台在终端或命令窗口,

101
00:08:17,004 --> 00:08:23,080
你注意到, 信息正在打印在服务器端.

102
00:08:23,080 --> 00:08:27,460
所以看，你还记得我在这里记录 req.session。

103
00:08:27,460 --> 00:08:30,780
所以这是 req.session 最初包含的地方。

104
00:08:30,780 --> 00:08:36,940
然后它说，GET 菜为一个无效。

105
00:08:36,940 --> 00:08:43,620
此时，您将在那里发送相应的授权标头。

106
00:08:43,620 --> 00:08:48,365
所以你的请求成功正确。

107
00:08:48,365 --> 00:08:53,080
但说明，什么是在会议中提出的下一个请求。

108
00:08:53,080 --> 00:08:58,080
回想一下，我删除了授权标头，然后发送请求。

109
00:08:58,080 --> 00:09:00,960
但请注意 rec.session 在这里包含的内容。

110
00:09:00,960 --> 00:09:03,088
特别要注意的是，

111
00:09:03,088 --> 00:09:08,129
它现在包含此用户字段，管理员位于那里。

112
00:09:09,280 --> 00:09:15,120
所以这就是服务器在 cookie 中从我们的客户端接收的内容。

113
00:09:15,120 --> 00:09:18,690
而 cookie 本身包含所有这些信息在这里。

114
00:09:18,690 --> 00:09:22,987
因此，服务器认识到这是一个有效的用户，

115
00:09:22,987 --> 00:09:27,249
然后从该服务器端发回结果。

116
00:09:27,249 --> 00:09:28,337
去邮差，

117
00:09:28,337 --> 00:09:32,220
让我们再次看看什么是饼干里面的细节。

118
00:09:32,220 --> 00:09:34,137
所以当你在这里打开 cookie 时，

119
00:09:34,137 --> 00:09:39,103
你会再次看到 cookie 内的所有信息的详细信息。

120
00:09:39,103 --> 00:09:43,026
如果你查看你的编辑器，你现在看到在你的编辑器中，

121
00:09:43,026 --> 00:09:48,140
这里有一个名为会话的新文件夹，这个文件夹是在这里创建的。

122
00:09:48,140 --> 00:09:52,320
现在这是因为我们正在使用文件存储来

123
00:09:52,320 --> 00:09:54,130
跟踪我们的所有会话。

124
00:09:54,130 --> 00:09:58,180
现在，这就是我使用文件存储的原因之一，以便我可以向您展示

125
00:09:58,180 --> 00:10:03,320
存储在我的服务器端的会话文件中的内容。

126
00:10:03,320 --> 00:10:08,430
所以如果你在这里打开这个文件，那么

127
00:10:08,430 --> 00:10:13,890
你会看到里面存储的会话信息。

128
00:10:13,890 --> 00:10:19,460
因此，如果您浏览此会话信息，请特别注意，

129
00:10:19,460 --> 00:10:22,880
这个初始字段位于服务器端。 所

130
00:10:22,880 --> 00:10:27,930
以这是你的服务器在服务器端跟踪所有这些信息的地方。

131
00:10:27,930 --> 00:10:32,650
现在，这个 cookie 本身被服务器识别，

132
00:10:32,650 --> 00:10:36,630
因为客户端在传入的请求中包含了这个 cookie。

133
00:10:36,630 --> 00:10:41,330
现在，它可以进入会话存储，然后检索信息，

134
00:10:41,330 --> 00:10:44,870
然后将其加载到 req.ession 上。

135
00:10:44,870 --> 00:10:49,800
因此，req.session 包含这

136
00:10:49,800 --> 00:10:54,810
些特定的信息，我的服务器正在使用这些信息进行交叉检查，以确保

137
00:10:54,810 --> 00:10:57,710
我的客户端是一个授权的客户端。

138
00:10:57,710 --> 00:11:00,010
这就是关于会议。

139
00:11:00,010 --> 00:11:03,230
有了这个，我们完成了这个练习。

140
00:11:03,230 --> 00:11:04,100
在本练习中，

141
00:11:04,100 --> 00:11:08,630
我们已经看到了如何设置快速应用程序来使用会话。

142
00:11:08,630 --> 00:11:13,751
我们还看到了我们如何使用文件存储来跟踪我们的会话。

143
00:11:13,751 --> 00:11:18,360
这是您使用

144
00:11:18,360 --> 00:11:22,291
消息快速会话第一部分做 GET 评论的好时机。

145
00:11:22,291 --> 00:11:25,521
[ 音乐]