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!')
セッション保持は簡単だけど、削除タイミングや有効タイミングはちゃんと考えないとなあ。。。
この記事が気に入ったらサポートをしてみませんか?