ハッピーメモメモ

私的備忘録

【Laravel】Laravel Sanctum-SPA認証③ログアウト

ログアウト

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
 
    public function logout(Request $request)
    {
        // ログインのセッションを無効とする
        Auth::logout();
        // セッションをクリア&セッションIDを再発行
        $request->session()->invalidate();
        // csrfトークンの再生成
        // 二重送信対策
        $request->session()->regenerateToken();
        return redirect('/');
    }

認証 8.x Laravel

 

・ログインとはなにか?

 それはセッションを切ること!

        // セッションをクリア&セッションIDを再発行
      session()->invalidate();

Laravelでセッションを使ってみる - Qiita

 

・Laravel では、VerifyCsrfToken ミドルウェアがリクエスト中のトークンとセッションに保存されているトークンが一致するか確認するので、処理が完了した時点でトークンを再生成します。これにより重複したリクエストが発生した場合、トークンが一致しなくなりエラーとして処理されます。

    // 二重送信対策
    // csrfトークンの再生成
    // Store #regenerate によるセッションID再生成でもトークンの再生成が行われる
    $session->regenerateToken();

PHP/Laravel アプリ開発時に知っていると便利かもしれないTips

Laravel 5.7 で二重送信対策 - bnote

 

・VerifyCsrfToken ミドルウェア

ログインするサーバーとログアウトするサーバーが別のとき、

CSRF対策のためにアクセスできないようになってる!

なので、例外的にこのURIは別のサーバーだけど信頼できる子よ~ってことをかけるようになっていた。

(正規のページからのアクセスだろうな?ということをCSRFはページ遷移のたびに都度確認してくれている!)

<?php

namespace App\Http\Middleware;

// VerifyCsrfTokenをミドルウェアとして扱うよ
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     * →和訳:CSRFの検証から除外すべきURI
     * @var array
     */
    protected $except = [
        //
    ];
}

ちなみに、もっともぐるとこんな感じ

よく分からなかったけど、もぐり方がわかっておもしろかった!

f:id:n-moeko1966:20220208161851p:plain

 

認証関連の用語

セッション

ユーザがWebサイトにアクセスし、ページ遷移し、ブラウザを閉じるまでの一続きの期間のこと(PHP本格入門上p543)