Nodejs,快递,护照移动

时间:2015-02-11 05:16:39

标签: node.js authentication mobile express passport.js

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

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

1 个答案:

答案 0 :(得分:2)

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

使用快速后端服务器登录后,服务器会向您发送响应,检查响应标头并验证是否有一个名为

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

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

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

对于浏览器应该如此,但是移动设备不是那么聪明,这意味着你必须手动获取这个字符串

"connect.sid=s.xxxxxxxxxxxxxxxxxxxxxxxxxx"  

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