如何在node.js中使用express来实现android应用程序中的服务器端会话?

你好我正在做一个Android应用程序,我有多个帐户login一次现在我的问题是,我为多个login我应该使用会话来validationlogin每个帐户用户。现在我在服务器端快速使用我已经阅读了很多有关在node.js中存储会话的文档

  1. 快速会话(虽然它只适用于开发,但不适用于生产,但不适用于我的应用程序)
  2. Cookie的会话
  3. 连接-的Redis
  4. 连接 – 蒙戈

我也听说过json的networking令牌,我可以生成唯一的令牌,然后我可以将令牌传递给客户端使用res.json({user_id:“user1”,令牌:“generated_token这里”))我也听说过护照但不知道如何做到这一点, 因为在护照我默认使用快递会话会不会有利于生产?

现在我的第一个问题是我已经阅读了所有的文档,并没有提到它在哪里我正在为每个正在注册的用户创build独特的令牌。 第二个问题,因为我正在使用我的服务器的Android应用程序将不会使用Cookie我将发送用户令牌参数req.body.token现在如何与当前user_id cmpare这个。

其实我没有得到控制的stream量,我的意思是如何在node.js会话中的一切事情。 此外,这个秘密是什么产生独特的令牌或什么。 另外我的意思是大约100000的用户现在注册我的应用程序,请告诉我相应的我应该使用哪种方式。

以前我问过这个问题,但是在那里我没有提到,因为我不是在做一个网站如何做到这一点(在我的情况下,将不会使用代币)

我知道我问的这个问题是非常含糊的,但请耐心与我,我只是想了解如何在node.js中使用会话

谢谢Anways

我会尽力回答这个问题,但是它是模糊的(正如你指出的那样)。 我将假设你的Android应用程序是一个原生的Android应用程序,并将连接到基于ExpressJS的云中的某种NodeJS后端。 如果不是这样,请在您的问题更新中澄清您的想法。

这个特定场景的最佳想法是寻找云提供。 例如,Azure App Service移动应用程序允许您实现身份validation – 它最终会返回一个JSON Web Token( http://jwt.io )来validation每个请求。

如果您不想受到云提供商的支持,但又想自己运行,则必须实施令牌生成并检查自己。 这通常遵循以下forms:

  • 设置一个WebAPI端点(可能/签名),它接受身份提供者提供的任何标记,validation信息并返回一个JWT – 有一个用于生成JWT的NPM模块(jsonwebtoken)。 确保智威汤逊包含您的用户的身份。 我倾向于使用电子邮件地址的身份。
  • 您的Android应用程序将使用Authorization标头对您的后端执行WebAPI请求,该标头的值为“Bearer”
  • 您的NodeJS API将使用JWT授权来validationJWT并提取用户身份,以便您可以在您的API逻辑中使用它。

在这个特定的场景中需要注意的是,你的后端代码正在实现一个WebAPI– API中没有cookies和会话。 将用户从客户端代码链接到后端代码的唯一方法是JWT。

作为一个简短的代码,这里是你如何validation智威汤逊:

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);