[音乐]
在本练习中，我们将研究 Express 会话的使用情况。
我们将设置快速会话中间件，
然后设置快速会话文件存储中间件。
然后将我们的应用程序设置为使用快速会话，而不是
像我们在前面的练习中那样使用它们的分配 cookie。
我们还将看到会话信息本身如何在
服务器端跟踪。
要开始本练习，
请转到终端或
命令窗口中的 ConfusionServer 文件夹，然后让我们安装快速会话。
所以要做到这一点，键入 npm 安装快速会话，
然后键入会话文件存储。
因为我们将使用文件存储来保存会话信息。
因此，将为此目的在这里模块中安装会话存储。
一旦安装了这两个，正如你现在所看到的，
我在
本课程中使用了快速会话 1.15.6 和会话文件存储 1.2.0。
两者都安装完毕后，让我们进入我们的混合服务器应用程序。
转到混合服务器应用程序，
在这里，让我们现在导入快速会话。
所以我们会说, VAR 会议需要, 快速会话.
和 VAR 文件 = 需要
会话-文件存储.
这将会话作为它的参数，
这个会话指的是我们刚刚在这里导入的。
现在，一旦我们这样做，然后我们进入我们的代码，
然后我们将看到而不是 CookieParser。
所以我要从那里评论掉 CookieParser，
然后我现在将使用，会话在这里。
然后，我们将设置
各种选项的会话，我们会说名字，
我只是在这里使用一个随机的会话 ID，然后，秘密。
我会使用我之前使用的秘密。
所以让我在那里复制那个字符串。
然后，保存，
打开，未初始化保存 false。
重新保存，假。
这些与我们目前正在编写的简单应用程序没有太大的区别。
然后我们会说商店是新的，
我们早些时候声明的文件。
就是这样
现在我的会话中间件全部设置为利用我们的应用程序。
现在，正如我所提到的那样，这个会话中间件会将这个
req.session 添加到请求消息中，
所以我要做一个 req.session 的控制台日志，以查看它包含的内容。
然后，在这里下面，而不是检查
请求分配 cookie 用户，我要在这里检查 req.session.user。
然后，我们将看看授权标头，等等。
所有这一部分将保持完全相同的以前。
但是在这里，我将在这里设置的是，
而不是设置 cookie，所以不是在这里使用 res.cookie，
我们会说，req.session.user = “管理员”。
所以我们将在请求
会话上设置用户属性来管理这里，然后从这一点开始。
所以这里的其余代码将保持与以前完全相同，
这里不会有任何变化。
并在那里接受，我们将检查 req.session，
用户，是管理员还是不？
所以这就是我们要在这里做的检查。
就是这样
这些是我们需要对我们的应用
程序进行的更改，以便使用会话代替已签名的 Cookie。
让我们保存更改，然后看看这个版本的快速服务器。
回到我们的终端或命令窗口，让我们重新启动我们的
服务器，如果你的服务器已经运行，只需停止它并重新启动服务器。
然后，一旦服务器启动并运行，
我们会去邮递员，如果你要求的话。
去邮差，让我清楚所有这些事情，
我们会清除标题，我们会清除授权。
然后我会去 cookie，
我要删除这个用户 cookie，因为该 cookie 不再有效。
然后, 让我们发送一个获取请求, 当地主机菜.
然后正如我们所期望的那样，它回来说，你没有被认证。
现在，让我们使用基本身份验证对自己进行身份验证。
所以我们会说，管理员，密码。
然后我们将更新请求，
然后我们将向同一点发送 GET 请求。
然后，我们从我们的服务器端得到回复。
现在，请注意，在标题中，现在你会再次看到它在这里说了 cookie。
现在这是由这里的会话存储造成的。 而
且，当你查看 cookie 时，你会看到
这里已经设置了另一个 cookie，名称是会话 ID。
所以这是我们给我们的会话的名称，所以
这是我们在这里使用的会话 ID。
如果您点击 Cookie，您会注意到会话 ID 就在那里。
然后，这是那个饼干里面的细节。
所以你可以注意到一大堆信息和
cookie 的到期日期，等等。
这对你们来说可能没有多大意义，但它存在于那里。
现在，让我清楚授权。
并且从标题中，让我删除这个授权标头。
然后我将重新发送请求，
你会注意到，即使现在，这个请求也将得到正确的服务。
由于这个 cookie 存在的事实，
并且这个 cookie 将包含在传出请求中。
服务器端会将其映射到适当的会话。
因此，服务器意识到这是一个授权用户，并
将回复答复。
现在去我们的服务器控制台在终端或命令窗口,
你注意到, 信息正在打印在服务器端.
所以看，你还记得我在这里记录 req.session。
所以这是 req.session 最初包含的地方。
然后它说，GET 菜为一个无效。
此时，您将在那里发送相应的授权标头。
所以你的请求成功正确。
但说明，什么是在会议中提出的下一个请求。
回想一下，我删除了授权标头，然后发送请求。
但请注意 rec.session 在这里包含的内容。
特别要注意的是，
它现在包含此用户字段，管理员位于那里。
所以这就是服务器在 cookie 中从我们的客户端接收的内容。
而 cookie 本身包含所有这些信息在这里。
因此，服务器认识到这是一个有效的用户，
然后从该服务器端发回结果。
去邮差，
让我们再次看看什么是饼干里面的细节。
所以当你在这里打开 cookie 时，
你会再次看到 cookie 内的所有信息的详细信息。
如果你查看你的编辑器，你现在看到在你的编辑器中，
这里有一个名为会话的新文件夹，这个文件夹是在这里创建的。
现在这是因为我们正在使用文件存储来
跟踪我们的所有会话。
现在，这就是我使用文件存储的原因之一，以便我可以向您展示
存储在我的服务器端的会话文件中的内容。
所以如果你在这里打开这个文件，那么
你会看到里面存储的会话信息。
因此，如果您浏览此会话信息，请特别注意，
这个初始字段位于服务器端。 所
以这是你的服务器在服务器端跟踪所有这些信息的地方。
现在，这个 cookie 本身被服务器识别，
因为客户端在传入的请求中包含了这个 cookie。
现在，它可以进入会话存储，然后检索信息，
然后将其加载到 req.ession 上。
因此，req.session 包含这
些特定的信息，我的服务器正在使用这些信息进行交叉检查，以确保
我的客户端是一个授权的客户端。
这就是关于会议。
有了这个，我们完成了这个练习。
在本练习中，
我们已经看到了如何设置快速应用程序来使用会话。
我们还看到了我们如何使用文件存储来跟踪我们的会话。
这是您使用
消息快速会话第一部分做 GET 评论的好时机。
[ 音乐]