Laravel Sanctumのカスタム認証ガード
7541 ワード
サンクチュアリで複数の警備員を使用するとき、Auth Hardを指定する方法
Laravel Sanctum トークンベースのAPI認証とSPA(単一ページアプリケーション)認証のためのソリューションへの試みです.SPA認証を実行する際に認証ガードを使用します.
デフォルトでは
あなたのウェブアプリが複数あるならば
Step 1 :ミドルウェアを作る
URLに基づいて認証ガードを設定する新しいミドルウェアを作成します.電話しましょう
ステップ2 :ミドルウェアを有効にする
ミドルウェアを指定するには複数の方法があります.この場合、我々は単にそれを
チームメンバーの誰も(または自分自身)将来の驚きを得ることを保証するために、それは良いアイデアは、この
閉じるこの動画はお気に入りから削除されています.そして、このユースケースのカスタムミドルウェアを作成する必要はありません.
それまでは、この迅速なハックを楽しむし、強力なララベルWebアプリケーションを構築します.楽しい!
の写真ですGlenn Carstens-Peters on Unsplash
前書き
Laravel Sanctum トークンベースのAPI認証とSPA(単一ページアプリケーション)認証のためのソリューションへの試みです.SPA認証を実行する際に認証ガードを使用します.
デフォルトでは
web
ガードはconfiguration file . デフォルトガードでは同じガードが使用されますrequest authentication 同様に.あなたのウェブアプリが複数あるならば
panels
(例えば、管理者、マネージャー、顧客など)、複数の認証ガードを使用します.Authミドルウェアにガードを指定する方法があります.Route::get('/setup', function () {
// Only the users authenticated via the admin guard can visit this page.
})->middleware('auth:admin');
しかし、聖域の場合は、ガードを指定する方法はありません.語sanctum
ガード名の代わりにそれ自体が使われる.Route::get('/setup', function () {
// The default `web` guard is used. There is no option to specify any other guard name here.
})->middleware('auth:sanctum');
どうやって非デフォルトガードを使うのですか?Many developers have この問題に直面している.それを解決しましょう.解決策
Step 1 :ミドルウェアを作る
URLに基づいて認証ガードを設定する新しいミドルウェアを作成します.電話しましょう
SetSanctumGuard
:<?php
declare(strict_types=1);
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Str;
class SetSanctumGuard
{
public function handle($request, Closure $next)
{
if (Str::startsWith($request->getRequestUri(), '/api/admin/')) {
config(['sanctum.guard' => 'admin']);
} elseif (Str::startsWith($request->getRequestUri(), '/api/manager/')) {
config(['sanctum.guard' => 'manager']);
} elseif (Str::startsWith($request->getRequestUri(), '/api/customer/')) {
config(['sanctum.guard' => 'customer']);
}
return $next($request);
}
}
私たちのWebアプリがAPIエンドポイントのこのパターンに続くと仮定すると、我々はダイナミックにミドルガードの内部でAuthガードを決定することができます.またはあなたのWebアプリケーションのシナリオとしてガードを決定する他の方法を試すことができます.ステップ2 :ミドルウェアを有効にする
ミドルウェアを指定するには複数の方法があります.この場合、我々は単にそれを
api
内部配列app/Http/Kernel.php
ファイル.protected $middlewareGroups = [
'web' => [
// ...
],
'api' => [
\App\Http\Middleware\SetSanctumGuard::class,
// ...
],
];
ステップ3 :設定ファイルにメモを追加する(オプション)チームメンバーの誰も(または自分自身)将来の驚きを得ることを保証するために、それは良いアイデアは、この
config/sanctum.php
ファイル.閉じるこの動画はお気に入りから削除されていますreturn [
'guard' => '', // This is set by the `SetSanctumGuard` middleware
//...
];
そして、これで、あなたのウェブアプリはユーザータイプに従ってルートを保護するためにそれぞれのAuth Guardを使用しなければなりません.歓声
閉じるこの動画はお気に入りから削除されています.そして、このユースケースのカスタムミドルウェアを作成する必要はありません.
それまでは、この迅速なハックを楽しむし、強力なララベルWebアプリケーションを構築します.楽しい!
の写真ですGlenn Carstens-Peters on Unsplash
Reference
この問題について(Laravel Sanctumのカスタム認証ガード), 我々は、より多くの情報をここで見つけました https://dev.to/gauravmak/custom-authentication-guard-in-laravel-sanctum-315kテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol