見出し画像

Laravel学習記録 #039 セッションを学ぶ

Laravelでのセッションの扱いについて学習しましたので、その記録です。

Laravelのセッションについて

  • ユーザー情報を複数のリクエスト間で保存し、後続のリクエストでその情報にアクセスできるようにする技術

  • Laravelではセッションを保存する方法を様々にサポートしている(file、cookie、databaseなど)

  • 設定はconfig/session.phpで行う

  • セッションの操作のためのファサードやヘルパが用意されている


設定

config/session.phpで設定できます。

driver:
保存先を指定します。デフォルトはfileです。
この状態だとstorage/framework/sessionsに保存されます。

'driver' => env('SESSION_DRIVER', 'file'),


lifetime:
セッションの有効期間を分単位で設定します。
ユーザーの最後の操作からの時間でカウントです。

'lifetime' => env('SESSION_LIFETIME', 120),


expire_on_close:
trueを選択でブラウザを閉じたときにセッションを終了します。

'expire_on_close' => false,


encrypt:
true選択でセッションデータが保存される際に暗号化されます

'encrypt' => false,



セッション操作

セッションヘルパを使って操作例です。

セッションを保存
putメソッドもしくはsessionメソッドに連想配列で保存できます。

session()->put('key', 'value');

session(['key' => 'value']);


保存したセッションを取得
全てのセッションを取得するにはallメソッドを使います。

session()->all();

特定のセッションを取得するには
getメソッドもしくはsesionメソッドにキーを指定して取得します。

session()->get('key');

session('key');


保存したセッションを削除
forgetメソッドでセッションを削除します。

// 単一のキーを削除
session()->forget('key');

// 複数のキーを削除
session()->forget(['key1', 'key2']);

全てのセッションを削除するにはflushメソッドを使います。

session()->flush();


セッションデータの一時保存
一時保存にはflushメソッドを使います。
現在の次のリクエスト中まで利用可能にし、その後自動的に削除されます。

session()->flash('status', 'Task was successful!');

一時保存されたデータを複数のリクエスト間で保持したい場合は、reflashメソッドを使用します。

session()->reflash();

特定の一時保存セッションのみを継続させて保持したい場合はkeepメソッドを使用します。

session()->keep(['key1', 'key2']);


現在のリクエストのみでセッションを有効にしたい場合はnowメソッドを使います。

session()->now('key', 'Task was successful!')



セッション保持は簡単だけど、削除タイミングや有効タイミングはちゃんと考えないとなあ。。。

この記事が気に入ったらサポートをしてみませんか?