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 Breeze

Posted at

AIに質問した回答

次、breezeを入れるときに参考にする用。

Laravelのガード(Guard)について説明します。

Laravelなどのフレームワークでは、認証機能を定義する仕組みを「ガード」と呼びます。

ガードとは
認証システムの「方法」を定義するコンポーネントです。つまり、「どのように」ユーザーを認証するかを決定します。

Webアプリケーション → セッションガード
モバイルアプリ → Sanctumガード(APIトークン)
外部サービス → Sanctumガード(APIトークン)

Laravelのauthミドルウェアとauth:sanctumミドルウェアの主な違いを説明します:

authミドルウェア

  • セッションベースの認証を使用
  • 主にWebアプリケーションで使用
  • Bladeテンプレートを使用する従来のLaravelアプリケーション
  • auth.phpのデフォルトガード(通常は'web')を使用
<?php
Route::middleware('auth')->group(function () {
    // セッションベースの認証が必要なルート
});

auth:sanctumミドルウェア

  • APIトークンベースの認証を使用
  • SPAやモバイルアプリのAPIで使用
  • Vue.js, React, Angular などのSPA
  • Bearerトークンによる認証
  • クロスオリジンリクエストに対応
<?php
Route::middleware('auth:sanctum')->group(function () {
    // APIトークン認証が必要なルート
});

sanctumの設定ファイルの場所

api/vendor/laravel/sanctum/src/SanctumServiceProvider.php

動作の仕組み

以下のように使用する時:

Route::middleware('auth:sanctum')->group(function () {
    // APIトークン認証が必要なルート
});

以下の処理が行われます:

1. リクエストが来た時にauth:sanctumミドルウェアが起動
2. リクエストヘッダーのAuthorization: Bearer {token}を確認
3. トークンの検証
4. 認証成功/失敗の判定

主な処理の流れは:

(AIのやつコピペしたけどqiitaってこんな図みたいの書けるんだ)

Laravelのbreeze:installコマンドでapiオプションを選択すると、自動的にSanctumが設定されます。

php artisan breeze:install api

特徴的な違い:

セッション認証(Web):

  • クッキーベース
  • CSRF保護が必須
  • サーバーサイドでセッション管理

Sanctumトークン認証(API):

  • Bearer tokenベース
  • ステートレス
  • クライアントサイドでトークン管理

なお、SPAでもSanctumのstateful機能を使うとセッションベースの認証も可能です。これはconfig/sanctum.phpのstateful配列で設定できます。

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?