LaravelのFortifyとSanctumの違いと使い分け!初心者向けに認証の仕組みをやさしく解説
生徒
「Laravelの認証を調べていたら、FortifyとSanctumという言葉が出てきました。どちらを使えばいいんですか?」
先生
「この二つは役割が少し違います。名前が並んで紹介されることが多いので、混乱しやすいですね。」
生徒
「プログラミング未経験なので、違いがまったく想像できません…」
先生
「大丈夫です。家の鍵と入館証に例えながら、順番に整理していきましょう。」
1. Laravelの認証機能を整理しよう
Laravelの認証とは、「ログインしているのは誰か」を確認する仕組みです。ユーザー名やメールアドレス、パスワードを使って本人かどうかを判断します。
Laravelには、認証を助けてくれる仕組みがいくつか用意されています。その中でも、FortifyとSanctumはよく名前が出てくる存在です。
まず大切なのは、「この二つは競合するものではなく、役割が違う」という点です。同じ認証でも、担当している仕事が異なります。
2. Laravel Fortifyとは何か?
Laravel Fortifyは、「ログイン処理そのもの」を担当する仕組みです。ユーザーが入力したメールアドレスとパスワードを確認し、正しければログイン状態にします。
Fortifyは、画面を持たない認証の裏側だけを提供します。つまり、「どうやってログインを判断するか」という中身だけを用意してくれます。
例えるなら、受付で身分証をチェックする係です。入館証が本物かどうかを確認し、問題なければ通してくれます。
3. Laravel Sanctumとは何か?
Laravel Sanctumは、「ログイン状態を安全に保つための仕組み」です。特に、API通信や別の画面からアクセスする場合に使われます。
Sanctumは、トークンという特別な合言葉を使って、「このアクセスは本人ですよ」と証明します。トークンとは、一時的な通行証のようなものです。
これは、建物に入るときに毎回身分証を出さず、入館証を首から下げて移動するイメージに近いです。
4. FortifyとSanctumの役割の違い
FortifyとSanctumの大きな違いは、どの場面を担当するかです。
Fortifyは「ログインするとき」に使われます。一方でSanctumは「ログインした後、その状態を使ってアクセスする」ときに使われます。
つまり、Fortifyは入り口の確認係、Sanctumは建物の中で使う通行証の管理係です。役割が違うので、混同しないことが大切です。
5. 初心者が混乱しやすいポイント
初心者がよく混乱するのは、「FortifyとSanctumのどちらかを選ばないといけない」と思ってしまう点です。
実際には、両方を一緒に使うこともあります。ただし、学習初期では「Fortifyはログイン処理」「Sanctumはログイン後の認証」と理解できていれば十分です。
細かい設定や高度な使い分けは、後から学ぶ内容なので、今は全体像をつかむことを優先しましょう。
6. Breezeとの関係を知ろう
Laravel Breezeを使った場合、内部ではFortifyが利用されています。つまり、BreezeはFortifyを使いやすくしたセットです。
そのため、Breezeでログインができているなら、すでにFortifyの仕組みを使っていることになります。
Sanctumは、API通信やスマートフォンアプリと連携する場合に登場することが多く、最初は意識しなくても問題ありません。
7. どう使い分ければいいのか
通常のWebサイトでログイン機能を作る場合は、Fortifyを使った仕組みで十分です。画面からログインし、ページを移動する流れに向いています。
一方で、画面を持たない通信や、外部から安全にアクセスしたい場合はSanctumが活躍します。
初心者の段階では、「Fortifyはログインの仕組み」「Sanctumは安全な証明書」というイメージを持つだけで、Laravelの認証がぐっと理解しやすくなります。