2017-01-16 5 views
2

node.jsをバックエンドとして使用してウェブサイトを開発しました。 私はそれをサーバーレスにしてラムダに展開しようとしています。 私はコードの大部分を書き直しますが、ユーザーがログインした後にセッションを維持する方法を理解していません。私は "express-session"モジュールを使用していて、セッションデータはすべてデータベースに記録されています。AWSラムダサーバレスウェブサイトセッション維持

私はセッションについて非常に深い理解はしていません。 Googleで検索したところ、必要なものが見つかりませんでした。 lambdaを使用してセッションを維持するには、サンプルコードがありますか? または任意のリソース。どうもありがとう!

答えて

2

などのようなPOST リクエストにクッキー(標準HTTPヘッダ)、 URLパラメータ、GET要求のURLの引数、体の引数、などのWebアプリケーション内でセッション 状態を維持するためにHTTPで利用可能な複数のメカニズムがありますが、隠されたフォームフィールド(HTMLフォーム)、または独自のHTTP ヘッダー。

出典:Session Management Cheat Sheet

あなたは、車輪を再発明すると、私は「その場合には、データベースからセッション変数を取得保存/ラムダ関数を、書きたいしない限り、AWSラムダは、セッション管理とは何の関係もありませんセッション管理にはAmazon Cognitoを使用することをお勧めします。 Amazon Cognito Identity SDK for JavaScriptを参照してください。

+0

ことの一つは、何であるかあなたが匿名ユーザーを使用して、ちょうどOAuthのフローにおける「状態」の文字列を保存したい場合。これに対してコグニートは過度の苦労をしていますか?例えばここ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 ... 
     }); 
    } 
関連する問題