大家好,我正在制作一个 android 应用程序,我一次有多个帐户登录,现在我的问题是,对于多个登录,我应该使用 session 来验证每个已登录的帐户用户。现在我正在使用 express服务器端我已经阅读了很多关于在 node.js 中存储 session 的文档
- Express-session(尽管它只对开发有益,对生产不利,但对我的应用程序不利)
- Cookie session
- 连接Redis
- 连接蒙戈
我还听说过 json 网络 token ,我可以在其中生成唯一 token ,然后我可以使用 res.json({user_id:"user1", token: "generated_token here"}) 将 token 传递给客户端 我也听说过 passport 但不知道它是怎么做到的同样在 passport 中我默认使用 express-session 它是否适合生产??
现在我的第一个问题是我已经阅读了所有文档,但没有提到我为每个注册用户创建唯一 token 的地方。 第二个问题,因为我正在为 Android 应用程序使用我的服务器,所以不会使用 cookie 我将发送用户 token 作为参数 req.body.token 现在如何将其与当前 user_id 进行比较。
实际上我没有得到控制流,我的意思是在 node.js 的 session 中一切是如何进行的。此外,这个 secret 是什么东西生成独特的 token 或什么。我的意思是现在大约有 100000 名用户注册了我的应用程序,请相应地告诉我我应该为我的应用程序使用哪种方式。
我之前问过这个问题,但我没有提到,因为我不是在做一个网站如何做到这一点(在我的情况下,不会使用 token )
我知道我问的这个问题很含糊,但请耐心等待我只是想了解 node.js 中如何使用 session
谢谢安维
最佳答案
我会尝试回答这个问题,但它含糊不清(正如您所指出的)。我将假设您的 Android 应用程序是原生 Android 应用程序,并且将连接到云中基于 ExpressJS 的某种 NodeJS 后端。如果不是这种情况,请在更新您的问题时澄清您的想法。
对于这种特定情况,最好的办法是寻求云服务。例如,Azure App Service 移动应用程序允许您实现身份验证 - 它最终会返回一个 JSON Web token (http://jwt.io) 来对每个请求进行身份验证。
如果您不想受制于云提供商,而是想自己运行它,您将必须自己实现 token 生成和检查。这通常遵循以下形式:
- 设置一个 WebAPI 端点(可能是/signin),它采用身份提供者提供给您的任何 token ,验证信息并返回 JWT - 有一个 NPM 模块 (jsonwebtoken) 用于生成 JWT。确保 JWT 包含您的用户的身份。我倾向于使用电子邮件地址作为身份。
- 您的 Android 应用程序将使用 Authorization header 向您的后端发出 WebAPI 请求,其值为“Bearer”
- 您的 NodeJS API 将使用 JWT 授权来验证 JWT 并提取用户身份,以便您可以在 API 逻辑中使用它。
在此特定场景中需要注意的重要一点是您的后端代码正在实现 WebAPI - API 中没有 cookie 或 session 。唯一将用户从客户端代码链接到后端代码的是 JWT。
作为一小段代码,下面是验证 JWT 的方法:
var express = require('express');
var app = express();
var jwt = require('express-jwt');
var jwtCheck = jwt({
secret: new Buffer('your-jwt-secret', 'base64'),
audience: 'your-jwt-audience'
});
app.get('/api/protected', jwtCheck, (req, res) => {
// Your code here
});
app.listen(process.env.PORT || 3000);
关于android - 如何在 node.js 中使用 express 为 Android 应用程序实现服务器端 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33045571/