目前我有一个网站使用 node.js,express.js 作为后端 API 服务器和 passport.js 进行身份验证。当用户使用他们的凭据登录时,服务器将启动一个 session 并将用户 session 保存在 req.user 或 req.session.passport.user 中(如果我说错了请纠正我......)
稍后当您 GET/loggedin
时,它只是 res.json(req.user)
并为您提供用户信息。在客户端,我们可以在每个请求中简单地 GET/loggedin
来检查登录状态和用户信息。
这是在浏览器上工作的。但是当我试图在移动设备上做同样的事情时,设备似乎无法与服务器建立 session 。这意味着 GET/loggedin
返回 401 unauthorized。
所以我想知道我是否做错了什么?
最佳答案
好的,我会在这里回答我自己的问题。
在你用 express 后端服务器登录后,服务器会向你发送一个响应,检查响应头并确认有一个名为的字段
"set-cookie"="connect.sid=s.xxxxxxxxxxxxxxxxxxxxxxxxxx"
当浏览器看到响应 header 中的“set-cookie”字段时,它会尝试将此信息写入 cookie。
接下来检查您的本地 cookie 并查看是否有名为 connect.sid
且值为 s.xxxxxxxxxxxxxxxxxxxxxxxxxx
的 cookie,如果是,则当您向服务器发送请求时服务器很可能已经知道你是谁了。
这对浏览器来说应该是正确的,但是移动设备不是那么智能,这意味着你必须手动获取这个字符串
"connect.sid=s.xxxxxxxxxxxxxxxxxxxxxxxxxx"
放入请求 header ,以便服务器可以使用您提供的 token 验证您的身份。
关于node.js - Nodejs、express、移动 Passport ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28447076/