2015-10-09 30 views
1

你好,我正在做一個android應用程序,我有多個帳戶登錄現在我的問題是,我爲多個登錄我應該使用會話來驗證登錄每個帳戶用戶。現在我使用快速服務器端的我已經在node.js中如何在node.js中使用express實現android應用程序中的服務器端會話?

  1. 快遞會話閱讀大量的文檔資料上存儲會話(雖然這僅僅是良好的發展,但不用於生產,但不是我的應用程序)
  2. Cookie的會話
  3. connect-Redis
  4. connect-mongo

我也聽說過json的網絡令牌,我可以生成獨特的令牌,然後我可以使用res.json({user_id:「user1」,令牌:「generated_token here」)將令牌傳遞給客戶端 也聽說過關於護照,但不知道它是如何做到這一點也如護照我默認使用快速會話會不會有利於生產?

現在我的第一個問題是我已經閱讀了所有的文檔並且沒有提到它在哪裏爲每個正在註冊的用戶創建獨特的標記。 第二個問題,因爲我正在使用我的服務器的Android應用程序將不會使用Cookie我將發送用戶令牌作爲參數req.body.token現在如何與當前user_id cmpare這一點。

其實我沒有得到控制的流量我的意思是在session.js的會話中一切都是如何進行的。此外,這個祕密是什麼產生獨特的令牌或什麼。另外我的意思是大約100000名用戶現在註冊了我的應用程序,請告訴我相應的我應該使用哪種方式。

我以前問過這個問題,但在那裏,我沒有提到因爲我不是做一個網站,如何做到這一點(如我的情況下,有將是沒有用的令牌)

我知道這個問題我問是很模糊的,但請原諒我只是想了解如何在會議Node.js的使用

感謝Anways

回答

3

我會盡力回答這個問題,但它是模糊的(如你指出)。我將假設你的Android應用是一個原生的Android應用,並將連接到基於ExpressJS的雲中的某種NodeJS後端。如果情況並非如此,請在更新您的問題時澄清您的想法。

這個特定場景的最佳想法是尋找雲提供。例如,Azure App Service移動應用程序允許您實現身份驗證 - 它最終會返回一個JSON Web令牌(http://jwt.io)來驗證每個請求。

如果您不想受到雲提供商的支持,但又想自己運行它,您將不得不實施令牌生成並檢查自己。這通常如下形式:

  • 設置一個的WebAPI端點(也許/登入),接受任何令牌身份提供給你,覈實信息,並返回一個智威湯遜 - 有用於製造NPM模塊(jsonwebtoken)智威湯遜。確保JWT包含用戶的身份。我傾向於使用電子郵件地址作爲身份。
  • 你的Android應用程序會做的WebAPI請求,後端有一個授權頭,它的值是「承載」
  • 你的NodeJS API將使用智威湯遜授權驗證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); 
+0

首先,你能告訴我這是什麼祕密我也有讀取Cookie的會話是最快的,多數民衆贊成。這就是爲什麼我想使用它有你使用Cookie會話之前? –

+0

你怎麼能認爲我不需要任何sessiosn模塊,因爲如果我不會實現會話,那麼我如何檢查用戶是否已經註銷? –

+0

首先,Cookie用於網絡連接 - 不是API連接。您的Android應用將使用WebAPI - 無Cookie。 JWT是一個會話令牌。沒有註銷真的 - 你已經證實帶有令牌的人是他們所說的人。在JWT中,您可以指定到期時間。您可以在您的應用中實施邏輯以定期刷新令牌。 –

相關問題