【Laravel】middleware(‘auth:api’)とmiddleware(‘auth’)の違い
今回はmiddleware('auth:api’)とmiddleware('auth’)の違いの紹介です。
目次
middleware(ミドルウェア)とは?
middlewareとは、HTTPリクエストが送られたタイミングで、
受信されてからレスポンスが返されるまでの間に実行される処理をカプセル化したものです。
ミドルウェアの実行の違い
今回はauthのミドルウェアを使用して紹介します。
public function __construct()
{
$this->middleware('auth');
$this->middleware('auth:api');
}
「auth」と「auth.api」は、一見違うように見えますが同じミドルウェアです。
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
]
スポンサードサーチ
authとauth.apiの違い
auth
web
ガードを使用して、auth
ミドルウェアで指定します。
$this->middleware('auth');
auth:api
api
ガードを使用して、auth:api
ミドルウェアで指定します。
$this->middleware('auth.api');
webガードとapiガードの役割
そもそもなんでwebガードとapiガードで異なる違いがあるのか?
認証メカニズム
webガード
web
ガードはセッションを使用して認証を行い、ブラウザのクッキーにセッションIDを保存します。
- セッションベースの認証を使用するため、ブラウザがクッキーを通じてセッションIDを管理します。
- ブラウザを通じてのログインフォームやセッション管理に適しています。
apiガード
api
ガードはトークンを使用して認証を行います。
- トークンベースの認証を使用するため、リクエストごとにトークンが必要です。
- APIリクエストの認証に適しており、トークンを使用してユーザーを認証します。
用途
ブラウザを通じたウェブアプリケーションと、外部システムとのAPI通信とでは、認証の仕組みやセキュリティ上の要件が異なることがあります。
それに対応するために、異なるガードを使用します。
web
ガード
auth
ミドルウェアを使用してリクエストを認証します。
「config/auth.php
」で設定されたデフォルトのガードを使用します。
- ブラウザを通じてのユーザー認証に使用します。
- セッションベースの認証メカニズムを使用します。
- デフォルトのログインフォームやセッション管理に適しています。
- ユーザーがブラウザを介してアプリケーションにログインする際にユーザー認証として使用されます。
apiガード
auth:api
ミドルウェアは、auth
ミドルウェアの拡張です。auth:api
ミドルウェアを使用することで、APIリクエストに対してapi
ガードを使用して認証を行います。
- API経由でのユーザー認証に使用します。
- トークンベースの認証メカニズムを使用します(例: Laravel PassportまたはLaravel Sanctumを使用)。
- APIリクエストに対してトークンを発行し、そのトークンを使用してユーザーを認証します。
- モバイルアプリケーションや外部サービスとの連携に適しています。
スポンサードサーチ
まとめ
結論としては使用するガードでミドルウェアを分けたらいいってことです。
ミドルウェ側は変わらず、実行するガードのみを変えているということです。
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,]]
// 以下省略
]
セキュリティを高める点でも個人的にはauth.apiをおすすめします。
$this->middleware('auth.api');