#laravel #laravel-sanctum
Вопрос:
Я просматривал много вопросов, связанных с использованием multi-auth, sanctum и SPA. Я также несколько раз читал документацию. Я в замешательстве от того, как это работает.
В настоящее время у меня есть 2 группы маршрутов: web
и api
. Веб-группа выводит различные шаблоны HTML и интерфейсный контент и т. Д., А маршрут API генерирует контент, который используется для заполнения этих шаблонов.
У меня также есть 2 разных типа пользователей, admins
и clients
. Каждый из них имеет доступ к определенным маршрутам web
и api
.
Я использую 2 охранника для защиты web
маршрутов, что работает просто отлично:
'guards' => [
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'client' => [
'driver' => 'session',
'provider' => 'clients',
],
],
И поставщики:
'providers' => [
'admins' => [
'driver' => 'eloquent',
'model' => AppModelsAdmin::class,
],
'clients' => [
'driver' => 'eloquent',
'model' => AppModelsClient::class,
],
],
Теперь у меня возникли проблемы с защитой маршрутов API. Я следовал инструкциям, установил X-XSRF-TOKEN
заголовок, добавил святилище в промежуточные программы, но я всегда получаю ответ 401. Я не знаю, как настроить своих охранников. Должен ли я добавить еще 2 охранника в массив? Такие как:
'guards' => [
// Web
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'client' => [
'driver' => 'session',
'provider' => 'clients',
],
// API
'sanctum_admin' => [
'driver' => 'sanctum',
'provider' => 'admins',
],
'sanctum_client' => [
'driver' => 'sanctum',
'provider' => 'clients',
],
],
А затем использовать добавление auth:sanctum_admin
промежуточного программного обеспечения к моим маршрутам API? Потому что это тоже не работает. Должен ли я удалить первоначальную охрану и использовать только святилище? Возможно ли вообще иметь несколько охранников как для Интернета, так и для API? Действительно запутался в том, как это работает. Любая помощь приветствуется.
Комментарии:
1. Я почти уверен, что вы смешиваете авторизацию API с аутентификацией пользователя. Я считаю, что по умолчанию API-маршруты не используют сеансы и нуждаются в использовании API-токенов. Не уверен на 100%, еще не играл с sanctum
2. Sanctum предоставляет 2 метода аутентификации: на основе файлов cookie и на основе токенов. Я использую метод на основе файлов cookie, который использует
X-XSRF-TOKEN
файлы cookie для аутентификации пользователя.3. Просто быстро просматриваю документы, но вы добавили группу
api
промежуточногоapp/Http/Kernel.php
программного обеспечения, как указано в документах?4. Да, я несколько раз следовал этим шагам. Я думаю, что проблема может быть связана с несколькими охранниками, поскольку охранники жестко закодированы в
guard
свойствах каждой модели. Я не уверен.