2017-01-16 5 views
2

Ich entwickelte eine Website mit node.js als Back-End. Kürzlich versuche ich, es serverlos zu machen und zu Lambda bereitstellen. Ich werde den Großteil meines Codes neu schreiben, aber habe einfach nicht herausgefunden, wie man die Sitzung nach dem Login des Benutzers verwaltet. Ich verwendete "Express-Session" -Modul und die Sitzungsdaten sind alle in der Datenbank aufgezeichnet.AWS Lambda Serverless Website Sitzung Wartung

Um ehrlich zu sein, ich habe kein sehr tiefes Verständnis für Sitzungen. Ich suchte auf Google und fand nicht, was ich brauche. Hat jemand einen Beispielcode zum Verwalten von Sitzungen mit Lambda? oder irgendwelche Ressourcen. Danke vielmals!

Antwort

2

Es gibt mehrere Mechanismen in HTTP verfügbaren Sitzung Zustand innerhalb Web-Anwendungen, wie zum Beispiel Cookies (Standard-HTTP-Header) zu halten, URL-Parameter, URL Argumente auf GET-Anfragen, Körper Argumente auf POST Anfragen, wie versteckte Formularfelder (HTML-Formulare) oder proprietäre HTTP-Header .

Quelle: Session Management Cheat Sheet

AWS Lambda hat nichts mit Session-Management zu tun, wenn Sie das Rad neu erfinden wollen und Lambda-Funktionen schreiben, die Session-Variablen aus der Datenbank speichern/abrufen, in welchem ​​Fall ich Wir empfehlen, dass Sie Amazon Cognito für die Sitzungsverwaltung verwenden. Siehe Amazon Cognito Identity SDK for JavaScript.

+0

Eine Sache, über die ich verwirrt bin, ist, was, wenn Sie einen anonymen Benutzer benutzen und nur eine "Zustand" Schnur in einem oauth Fluss speichern möchten. Ist Cognito dafür Overkill? z.B. Schritte 2-4 hier: https://jsapi.apiary.io/apis/starblingbankapi/reference/0/customer-api/get-customer.html – timhc22

+1

@ timhc22 Ich glaube nicht, dass Cognito in diesem speziellen Fall die richtige Option ist . Persönlich würde ich dafür [localStorage] (https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) verwenden, bis ich den Benutzer authentifizieren/registrieren muss. –

1

In der Amazon Cognito Identity SDK for Javascript, überprüfen Sie insbesondere den Anwendungsfall 16, es zeigt, wie Sie den aktuellen Cognito-Benutzer abrufen. Sie können diese Funktion verwenden, um die aktuellen Benutzerattribute von Seite zu Seite zu übergeben.

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 ... 
     }); 
    } 
Verwandte Themen