Overview
このガイドでは、 Lambda MongoDBを使用してHTTPセッションを設定する 方法を学習できます。セッションを使用すると、アプリケーションは複数のサーバーリクエストにわたってユーザーに関する情報を保存できます。アプリケーションはこの情報を指定された場所に保存し、ユーザーが行う将来のリクエストでアクセスできます。
注意
セッション ハンドラーの実装
v5.4 Lambda MongoDB、セッション情報を保存するために Lambda DatabaseSessionHandlerクラスを拡張する専用の MongoDbSessionHandlerクラスが導入されています。mongodb セッション ドライバーは、ユーザー ID、 IPアドレス、ユーザーエージェント(存在する場合)を保存します。
v5.3 以前では、セッション ドライバーは Symfloyフレームワークの MongoDbSessionHandlerクラスを使用します。
セッションのサポートの詳細については、Lambel ドキュメントの「 HTTPセッション 」を参照してください。
セッションを登録する
セッションを登録する前に、アプリケーションの config/database.phpファイルでMongoDBへの接続を設定する必要があります。この接続を設定する方法については、クイック スタートガイドの「MongoDB接続の構成」ステップを参照してください。
次に、次のいずれかの方法でセッション ドライバーと接続を選択できます。
.envファイルで、次の環境変数を設定します。.envSESSION_DRIVER=mongodb # Optional, this is the default value SESSION_CONNECTION=mongodb 次のコードに示すように、
config/session.phpファイルには が含まれています。config/session.htmlreturn [ 'driver' => 'mongodb', // Required 'connection' => 'mongodb', // Database connection name, default is "mongodb" 'table' => 'sessions', // Collection name, default is "sessions" 'lifetime' => null, // TTL of session in minutes, default is 120 'options' => [] // Other driver options ];
次のリストでは、options 配列で設定できるその他のドライバー オプションについて説明します。
id_field: セッションIDを保存するためのカスタムフィールド名(デフォルト:_id)data_field: セッション データを保存するためのカスタムフィールド名(デフォルト:data)time_field: タイムスタンプを保存するためのカスタムフィールド名(デフォルト:time)expiry_field: 有効期限のタイムスタンプを保存するためのカスタムフィールド名(デフォルト:expires_at)ttl: 有効期間(秒単位)
ガベージコレクションの expiry_fieldフィールドにインデックスを作成することをお勧めします。また、セッション情報を保存するコレクションに TTLインデックスを作成し、データベース内のセッションを自動的に期限切れにすることもできます。
次のコードに示すように、Schema ビルダを使用して TTLインデックスを作成できます。
Schema::create('sessions', function (Blueprint $collection) { $collection->expire('expires_at', 0); });
インデックス定義で時間値を 0 に設定すると、 MongoDB はexpires_atフィールドに指定された時刻にドキュメントを期限切れにするよう指示します。
Schema ビルダを使用してインデックスを作成する方法の詳細については、 スキーマ ビルダガイドの「 スパース、TTL、一意のインデックスの作成 」セクションを参照してください。
TTL インデックスの詳細については、サーバー マニュアルの「 TTL を設定してコレクションのデータを期限切れにする 」を参照してください。