Nodejs、express和passport如何应用于移动端?

4

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

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

这在浏览器上运行良好。但是,当我尝试在移动设备上执行相同的操作时,似乎设备无法与服务器建立会话。这意味着GET /loggedin返回401未经授权。

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


您需要使用cookie进行get请求。 - Mukesh Agarwal
1个回答

4

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

当您使用Express后端服务器登录后,服务器将向您发送响应,请检查响应标头并验证是否存在名为的字段。

"set-cookie"="connect.sid=s.xxxxxxxxxxxxxxxxxxxxxxxxxx"  

当浏览器在响应头中看到“set-cookie”字段时,它会尝试将此信息写入cookie。
接下来,请检查您的本地cookie,看看是否有名为:connect.sid 值为 s.xxxxxxxxxxxxxxxxxxxxxxxxxx 的cookie。如果是,则当您向服务器发送请求时,服务器很可能已经知道您是谁了。
这对于浏览器来说应该是正确的,但移动设备并不那么聪明,这意味着您必须手动获取此字符串。
"connect.sid=s.xxxxxxxxxxxxxxxxxxxxxxxxxx"  

将token放入请求头中,以便服务器可以使用您提供的token验证您的身份。

你是如何准确地做到这一点的? - Nati Krisi
我应该使用HTTPS来保护这个过程吗? - member555
如果您创建一个https服务器,则可以使用它,我认为它更加安全。 - Shih-Min Lee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接