繁体   English   中英

如何使用Express为Android应用程序在node.js中实现服务器端会话?

[英]How to implement server side sessions in node.js with express for an android app?

您好,我正在制作一个android应用,一次我有多个帐户登录,我的问题是我要进行多个登录,我应该使用会话来验证每个登录的帐户用户。现在,我在服务器端使用express我已经阅读了很多有关在session.js中存储会话的文档

  1. Express会话(尽管这仅对开发有利,但对生产不利,对我的应用程序不利)
  2. Cookie的会话
  3. 连接-的Redis
  4. 连接 - 蒙戈

我也听说过json网络令牌,我可以在其中生成唯一的令牌,然后可以使用res.json({user_id:“ user1”,令牌:“ generated_token here”}}将令牌传递给客户端,我也听说过护照但是不知道怎么做, 因为在护照上我默认使用express-session会不会对生产有好处?

现在,我的第一个问题是我已经阅读了所有文档,却没有提到我在为每个注册用户创建唯一令牌的位置。 第二个问题,因为我将服务器用于android应用程序,因此不会使用cookie,我将按照参数req.body.token发送用户令牌,现在该如何将其与当前user_id进行比较。

实际上,我没有控制流,我的意思是在node.js的会话中所有事情都是如何进行的。 同样,这个秘密是产生唯一令牌的东西。 另外,我的意思是现在大约有100000个用户注册了我的应用程序,请相应地告诉我应该使用哪种方式使用我的应用程序。

我之前曾问过这个问题,但我没有提到,因为我没有建立网站的操作方法(就我而言,将不会使用令牌)

我知道我要问的这个问题非常模糊,但请忍受我只是想了解如何在node.js中使用会话

感谢Anways

我会尽力回答这个问题,但这很模糊(如您所指出的)。 我将假设您的Android应用程序是本机Android应用程序,并将连接到基于ExpressJS的云中的某种NodeJS后端。 如果不是这种情况,请在更新您的问题时阐明您的想法。

对于这种特定情况,最好的主意是看云提供的服务。 例如,Azure App Service移动应用程序允许您实施身份验证-它最终返回JSON Web令牌( http://jwt.io )以对每个请求进行身份验证。

如果您不想迷恋云提供商,而是想自己运行它,则必须实现令牌生成并检查自己。 通常采用以下形式:

  • 设置一个WebAPI端点(可能是/ signin),该端点将使用身份提供者提供给您的任何令牌,验证信息并返回JWT-有一个用于生成JWT的NPM模块(jsonwebtoken)。 确保JWT包含您的用户身份。 我倾向于使用电子邮件地址作为身份。
  • 您的Android应用程序将使用授权标头向您的后端发出WebAPI请求,该标头的值为“ Bearer”
  • 您的NodeJS API将使用JWT授权来验证JWT并提取用户身份,以便您可以在API逻辑中使用它。

在此特定情况下要注意的重要一点是,您的后端代码正在实现WebAPI-API中没有cookie或会话。 将用户从客户端代码链接到后端代码的唯一方法是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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM