Sanctum guard для Authorization: Bearer Token
Пример использования кастомного Laravel Guard для авторизации пользователя по ключу Bearer без сохранения состояния.
В app\Providers\AuthServiceProvider.php добавляем обработчик для быстрого определения
аутентификации через замыкание с помощью метода Auth::viaRequest. Далее получаем ключ
вызвав метод $request->bearerToken(). Находим нужный ключ в таблице ключей доступа и
переходим к поиску пользователя. На выход отдаем пользователя или null. Данное решение
не претендует на звание правильного, но имеет место быть.
namespace App\Providers;
use App\Models\User;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Laravel\Sanctum\PersonalAccessToken;
class AuthServiceProvider extends ServiceProvider
{
/**
* The model to policy mappings for the application.
*
* @var array<class-string, class-string>
*/
protected $policies = [
//
];
/**
* Register any authentication / authorization services.
*/
public function boot(): void
{
Auth::viaRequest('bearer_token', function (Request $request) {
$bearer = $request->bearerToken();
if (!$bearer) {
return null;
}
$token = PersonalAccessToken::findToken($bearer);
if ($token) {
return User::find($token->tokenable_id);
}
return null;
});
}
}
Подробнее можно ознакомиться здесь.