node.js - Nodejs、express、移动 Passport

标签 node.js authentication mobile express passport.js

目前我有一个网站使用 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/

相关文章:

node.js - grunt 异步函数的 Node 替代方案

linux - Pam 配置文件条件执行语句

html - 缩放 HTML/CSS 以适应各种显示器,这可能吗?

node.js - 使用 EJS 创建新的 DOM 元素

node.js - Mongo 每天汇总 $group 吗?

java - Java中的URLConnection后如何登录网站?

javascript - 在浏览器中检测 iPhone 调用警报的点击事件

android - 为 ASP.NET MVC 3 应用程序创建 Android 应用程序

javascript - 从函数返回结果(javascript、nodejs)

java - 如何在 Axis2 WebService 中通过用户名和密码进行身份验证?