Laravel Sanctum의 사용자 정의 인증 가드
7703 단어 laravelauthenticationprogramming
전문
Laravel Sanctum은 토큰 기반 API 인증 및 SPA(Single page application) 인증을 위한 이동 솔루션입니다. SPA 인증을 수행할 때 인증 가드를 사용합니다.
기본적으로
web
가드는 configuration file에 따라 사용됩니다. 기본 Laravelrequest 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이 이 문제에 직면했습니다. 해결합시다.
해결책
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);
}
}
웹 앱이 API 끝점에서 이 패턴을 따른다고 가정하면 미들웨어 내에서 인증 가드를 동적으로 결정할 수 있습니다. 또는 웹 앱 시나리오에 따라 다른 방법을 시도하여 가드를 결정할 수 있습니다.
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
//...
];
이를 통해 웹 앱은 각 인증 가드를 사용하여 사용자 유형에 따라 경로를 보호해야 합니다.
건배
가까운 시일 내에 Sanctum에서 이 사용자 정의를 허용하기를 바랍니다. 그리고 이 사용 사례를 위해 사용자 지정 미들웨어를 만들 필요가 없습니다.
그때까지 이 빠른 해킹을 즐기고 강력한 Laravel 웹 앱을 구축하십시오. 재미있게 보내세요!
크레딧 - Glenn Carstens-Peters의 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.)