目的
セッション削除の際に、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
すると、以下のメッセージが表示されます:
✅ セッションがクリアされました。