Laravel Jetstream - требуется ли Sanctum для защиты веб-маршрутов?

Мы используем последнюю версию Laravel с Laravel Jetstreamи хотите реализовать функцию, позволяющую нашим администраторам входить в систему от имени обычного пользователя. Это позволяет нам оказывать лучшую поддержку, если некоторые пользователи сталкиваются с проблемами со своими учетными записями.

Эта функция кажется идеальной для достижения желаемого результата:

      Auth::loginUsingId(1);

К сожалению, я получаю следующее сообщение об ошибке

      Method Illuminate\Auth\RequestGuard::loginUsingId does not exist

Через некоторое время, благодаря помощи Laravel Debugbar, я понял, что проблема вызвана Laravel Sanctum. Он не включает указанную выше функцию и настроен для защиты маршрутов в app\routes\web.php файл.

Вроде работает после смены middleware из

      Route::middleware(['auth:sanctum', 'verified'])

к

      Route::middleware(['auth', 'verified'])

Короче говоря: есть ли другое решение для этого? Или лучше: это вообще правильное решение? Могу ли я просто удалить из Интернета маршруты или это требуется по какой-то причине? Мы хотим по-прежнему использовать Sanctum для аутентификации наших мобильных приложений API на основе токенов.

1 ответ

Sanctum предоставляет простой механизм (по сравнению с Passport) для аутентификации ваших API и SPA (обслуживаемых API).

Если вы не разрабатываете SPA, вы не обязаны использовать auth:sanctum промежуточное программное обеспечение и вместо этого может использовать Интернет auth промежуточное ПО.

Вы все еще можете и должны использовать промежуточное ПО sanctum в своем routes/api.php файл.

Другие вопросы по тегам