Nodejs、express、移动护照

Nodejs, express, passport going mobile

目前我有一个网站使用 node.js、express.js 作为后端 API 服务器和 passport.js 进行身份验证。当用户使用他们的凭据登录时,服务器将启动一个会话并将用户会话保持在 req.user 或 req.session.passport.user 中(如果我说错了请纠正我..)

稍后当您 GET /loggedin 它只是 res.json(req.user) 并为您提供用户信息。在客户端,我们可以在每个请求中简单地 GET /loggedin 来检查登录状态和用户信息。

这适用于浏览器。但是当我试图在移动设备上做同样的事情时,设备似乎无法与服务器建立会话。这意味着 GET /loggedin returns 401 未经授权。

所以我想知道我是否做错了什么?

好的,我会在这里回答我自己的问题。

在您使用 express 后端服务器登录后,服务器将向您发送响应,检查响应 header 并确认有一个名为

的字段
"set-cookie"="connect.sid=s.xxxxxxxxxxxxxxxxxxxxxxxxxx"  

当浏览器在响应 header 中看到 "set-cookie" 字段时,它会尝试将此信息写入 cookie。

接下来检查您的本地 cookie,看看是否有名为 connect.sid 且值为 s.xxxxxxxxxxxxxxxxxxxxxxxxxx 的 cookie,如果是,那么当您向服务器发送请求时,服务器很可能会知道您是谁已经。

这对于浏览器来说应该是正确的,但是移动设备并不那么智能,这意味着您必须手动获取此字符串

"connect.sid=s.xxxxxxxxxxxxxxxxxxxxxxxxxx"  

到请求 header 中,以便服务器可以使用您提供的令牌验证您的身份。