0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravelのセッションデータをクリアする-カスタムArtisanコマンド作成-

Posted at

目的

セッション削除の際に、GoogleChromeでやるのではなく、Laravelのセッションデータクリアに留めたい。
GoogleChromeだと、セッションで保存してるアプリに関係ないサイトデータが消えてしまうことがあるため。

手順

① Artisan コマンドの作成

ターミナルで以下の Artisan コマンドを実行:

php artisan make:command ClearSession

これで app/Console/Commands/ClearSession.php というファイルが自動生成されます。

② ClearSession.php の編集

生成されたClearSession.phpを開き、以下のコードを記述:

ClearSession.php
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Session;

class ClearSession extends Command
{
    /**
     * コマンドのシグネチャ(ターミナルで使う名前)
     *
     * @var string
     */
    protected $signature = 'session:clear';

    /**
     * コマンドの説明
     *
     * @var string
     */
    protected $description = 'Laravelのセッションデータを削除します';

    /**
     * コマンドの実行ロジック
     */
    public function handle()
    {
        // セッションを削除
        Session::flush();

        // ストレージに保存されたセッションファイルを削除(fileドライバ使用時)
        if (config('session.driver') === 'file') {
            $path = storage_path('framework/sessions');
            if (is_dir($path)) {
                array_map('unlink', glob("$path/*"));
            }
        }

        $this->info('✅ セッションがクリアされました。');
    }
}

③ コマンドを登録

カスタムコマンドをLaravelで使えるようにするため、app/Console/Kernel.phpに登録します。
app/Console/Kernel.phpを開いてcommands配列に追加

Kernel.php
protected $commands = [
    \App\Console\Commands\ClearSession::class,
];

これで php artisan session:clear が使えるようになります。

④ コマンドの実行

ターミナルで以下のコマンドを実行:

php artisan session:clear

すると、以下のメッセージが表示されます:

✅ セッションがクリアされました。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?