簡體   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