2017-01-16 51 views
2

我開發了一個使用node.js作爲後端的網站。 最近我試圖讓它無服務器並部署到lambda。 我將重新編寫大部分代碼,但只是沒有想出如何在用戶登錄後維護會話。我使用「express-session」模塊,會話數據全部記錄在數據庫中。AWS lambda無服務器網站會話維護

說實話,我對會議沒有很深入的瞭解。 我在谷歌搜索,沒有找到我所需要的。 有沒有人有維護使用lambda會話的一些示例代碼? 或任何資源。非常感謝!

回答

2

有在HTTP提供對Web應用程序中保持會話 狀態的多種機制,如餅乾(標準HTTP標頭), URL參數,對GET請求URL參數,車身參數上POST 請求,如隱藏的表單域(HTML表單)或專有HTTP頭。

來源:Session Management Cheat Sheet

AWS LAMBDA無關會話管理,除非你要重新發明輪子和寫入存儲/檢索數據庫會話變量lambda函數,在這種情況下,我d建議您使用Amazon Cognito進行會話管理。見Amazon Cognito Identity SDK for JavaScript

+0

我很困惑的一件事是,如果你想使用匿名用戶並在oauth流中存儲'狀態'字符串,該怎麼辦。 Cognito是否爲此過度誇大?例如步驟2-4在這裏:https://jsapi.apiary.io/apis/starlingbankapi/reference/0/customer-api/get-customer.html – timhc22

+1

@ timhc22我不認爲Cognito在這個特殊情況下是正確的選擇。就個人而言,我會使用[localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage),直到我需要驗證/註冊用戶。 –

1

Amazon Cognito Identity SDK for Javascript中,特別檢查用例16,它顯示瞭如何檢索Cognito當前用戶。你可以使用這個函數來傳遞每個頁面當前的用戶屬性。

var poolData = { 
     UserPoolId : '...', // Your user pool id here 
     ClientId : '...' // Your client id here 
    }; 
    var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData); 
    var cognitoUser = userPool.getCurrentUser(); 

    if (cognitoUser != null) { 
     cognitoUser.getSession(function(err, session) { 
      if (err) { 
       alert(err); 
       return; 
      } 
      console.log('session validity: ' + session.isValid()); 
      // other AWS actions ... 
     }); 
    }