D150 セッション管理

セッション管理という手段を用いることで、ステートレスなHTTP通信をステートフルな通信にすることができます。今回はセッション管理について紹介します。

セッションとは

セッションとは、アクセスの開始から終了までの一連の通信のことをいいます。HTTP通信はステートレスな通信となっており、状態を保持することができません。そこで、ステートフル(状態を保持できる状態)にするための手段としてセッションを管理します。

※ステートレス、ステートフルについても大事な概念なので調べて理解を深めてください。

Laravelでセッション管理について

Laravelにおいてセッション管理はconfig/session.phpにて定義を行っております。

PHP
return [
    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => env('SESSION_CONNECTION'),
    'table' => 'sessions',
    'store' => env('SESSION_STORE'),
    'lottery' => [2, 100],
    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),
    'path' => '/',
    'domain' => env('SESSION_DOMAIN'),
    'secure' => env('SESSION_SECURE_COOKIE'),
    'http_only' => true,
    'same_site' => 'lax',

];

セッションの有効期限や、セッションファイルの保存先などを定義しております。

下記のように記載することでセッションを取得や削除、保存などを行うこともできます。

セッションの取得

PHP
$request->session()->all(); //セッションの全データを取得

セッションの削除

PHP
$request->session()->flush(); //保存されているセッションの全データを削除

セッションの保存

PHP
$request->session()->put('name', '山田'); //第一引数にセッションキー、第二引数にその値を指定

エンジニアからのアドバイス

コードの理解は難しいところもあるかと思いますが、セッションを用いる理由は、HTTP通信はステートフルにすることです。ステートフルとステートレスの違いを理解し、その違いのためにセッションの管理をすると捉えても一旦は良いかと思います。

---