目前我有一个网站使用node.js,express.js作为后端API服务器,使用passport.js进行身份验证。当用户使用他们的凭据登录时,服务器将启动会话并将用户会话保留在req.user或req.session.passport.user中(如果我说错了,请纠正我。)
稍后当您GET /loggedin
时它只是res.json(req.user)
,并为您提供用户信息。在客户端上,我们可以在每个请求中GET /loggedin
检查登录状态和用户信息。
这适用于浏览器。但是当我试图在移动设备上做同样的事情时,似乎设备无法与服务器建立会话。这意味着GET /loggedin
返回401 unauthrorized。
所以我想知道我做错了什么?
答案 0 :(得分:2)
好的,我会在这里回答我自己的问题。
使用快速后端服务器登录后,服务器会向您发送响应,检查响应标头并验证是否有一个名为
的字段"set-cookie"="connect.sid=s.xxxxxxxxxxxxxxxxxxxxxxxxxx"
当浏览器看到" set-cookie"响应头中的字段,它会尝试将此信息写入cookie。
接下来检查您的本地Cookie,看看是否有一个名为connect.sid
的cookie值为s.xxxxxxxxxxxxxxxxxxxxxxxxxx
,如果是,那么当您向服务器发送请求时,服务器很可能会知道您是谁已经。
对于浏览器应该如此,但是移动设备不是那么聪明,这意味着你必须手动获取这个字符串
"connect.sid=s.xxxxxxxxxxxxxxxxxxxxxxxxxx"
到请求标头中,以便服务器可以使用您提供的令牌验证您的身份。