PCS開発チーム
PCS開発チーム
Sanctumは2つの機能を持ってるから分かりにくい。
APIトークン認証
OAuthのようなトークンで認証するシステムを作るためのもの。トークンで認証してAPIを呼び出す側は外部のサーバーサイドでもクロスオリジンなフロントでも良い。
基本的には外部からの呼び出しで使う。セッションが使えないのでトークンで認証。
SPA認証
ファーストパーティ内のフロントから通常のLaravelと同じくセッションで認証する。ファーストパーティというのは「LaravelによるAPIもフロントもexample.com」もしくは「APIはapi.example.com、フロントはexample.com」のように同じドメインなこと。
内部からの呼び出しで使う。セッションが使えるのでトークンは使わない。
「フロントからAPIを呼び出す時はトークンで認証するのが当然」と思い込んでる人はSPA認証を理解しにくい。同一オリジンのセッション認証が有効な中でフロントからAPIを呼び出してた人は理解しやすい。
Laravelデフォルトではroutes/api.php
はセッション無効なので有効にするにはコメントアウトされてるEnsureFrontendRequestsAreStateful
を使用する。
https://github.com/laravel/laravel/blob/04a8e8553e6bf0ed54f5136949d7152df025dd91/app/Http/Kernel.php#L42