Bearer Token в Laravel Sanctum без использования миддлвара

Получение юзера по переданному заголовку Authorization: Bearer token. Как получить ID пользователя через токен авторизации в Laravel Sanctum.

Наши услуги Стать партнером
Bearer Token в Laravel Sanctum без использования миддлвара
27.08.2025 27.08.2025 5

Без использования миддлвара auth:sactum

В данной статье вы узнаете, как получить модель юзера по переданному токену авторизации не защищая маршрут миддлваром auth:sanctum. Это может быть полезно в случае, когда ваш маршрут является ситуативным и вы хотите, чтобы доступ к нему имелся как авторизованным запросам, так и не авторизованным. Защищая маршрут миддлваром auth:sanctum мы сознательно блокируем его для неавторизованных запросов.

Внимание, в этой статье не будет рассказано о том, что такое Bearer Token и Laravel Sanctum (об этом уже море контента на других источниках) и я надеюсь, вы знаете что это такое.

Ситуативные маршруты Laravel

Иногда возникают ситуации, когда нужно чтобы один API метод работал как ситуативный, обращаться к которому можно было бы как авторизованным, так и неавторизованным пользователям/запросам. Это может быть полезно в ситуациях, например, таких как логирование действий с фронта и соответственно передавая или не передавая заголовок авторизации Bearer Token в запрос, можно ассоциировать или не ассоциировать запрос с конкретным пользователем. Другими словами решение о том, связывать ли пользователя с запросом или нет мы оставляем за разработчиком фронта нашего приложения, а наш бэкенд, на основе передан ли заголовок авторизации или нет реализует свою последовательность действий.

Пример кода

Ниже приведен пример кода получения токена заголовка авторизации с помощью метода bearerToken() класса Illuminate\Http\Request. Метод возвращает строковое значение токена, либо null, если заголовок с токеном не был передан или токен не является типа Bearer. Пример показан на версиях PHP 8.0, Laravel 8.6 и Laravel Sanctum 2.15

//...
use Illuminate\Http\Request;
use Laravel\Sanctum\PersonalAccessToken;
use App\Models\User;
//...

/**
 * @param Request $request
 */
public function action(Request $request)
{
    //...

    // Получаем токен и передаем его в метод getUserByToken, ожидаем, что в ответе придет модель User или null
    $user = $this->getUserByToken($request->bearerToken());

    // Убедимся что мы получаем юзера или null при передаче или не передаче Bearer token
    dd($user);
    //ваш код...
}

/**
 * Метод обрабатывает Bearer token и либо возвращает модель User, либо null
 * @param string|null $token
 * @return null|User
 */
private function getUserByToken(string|null $token): ?User
{
    if ($token) {

        // По токену получаем объект владельца токена из метода класса Laravel\Sanctum\PersonalAccessToken
        $accessToken = PersonalAccessToken::findToken($token);

        if ($accessToken) {
            // Если нашли владельца токена, находим соответствующую модель User
            $user = User::where('id', $accessToken->tokenable_id)->first();
        } else {
            // Но, можем и не найти владельца токена, если например передан валидный, но несуществующий Bearer Token
            return null;
        }
        return $user ? $user : null;
    } else {
        return null;
    }
}

Заключение

На этом всё, если статья показалась вам полезной, то подпишитесь на нашу рассылку в боте ниже, обещаем присылать вам только интересный и полезный контент. Либо продолжите изучать статьи на нашем сайте.

Подписаться на рассылку

Статья: "Как получить юзера с помощью Bearer Token в Laravel Sanctum"

Понравилась статья "Как получить юзера с помощью Bearer Token в Laravel Sanctum"? Получайте информацию первыми о последних трендах в сфере веб-разработки и SEO-оптимизации, AI и дизайне, подписавшись на нашу email рассылку, оставив почту. Обещаем, никакого спама.

Автор статьи

Мы стараемся делать статьи максимально полезными и информативными

Автор статьи
Никита Ив (Full-stack web-developer)

Спасибо за прочтение статьи "Как получить юзера с помощью Bearer Token в Laravel Sanctum", если статья показалась вам полезной, можете поделиться ею с друзьями и коллегами. Также, можете подписаться на Email-рассылку, обещаю регулярно отправлять вам полезную информацию, статьи и никакого спама.

Немного расскажу о себе, являюсь full-stack разработчиком и основателем проекта webseed.ru. Более 7-ми лет создаю веб-сайты, приложения, личные кабинеты, CRM, админки, магазины, интеграции и многое другое. За годы работы с клиентами, я приобрел огромный опыт в разработке и создании веб-проектов, что позволяет мне предлагать качественные и современные решения для наших клиентов и делиться полезным опытом.

Другие статьи

Полезные статьи о создании и продвижении сайтов, AI, дизайне и трендах в веб-разработке

О нас

Информация о компании

Мы имеем широкий опыт в реализации и технической поддержке коммерческих онлайн-проектов. Реализованные нами решения автоматизируют и оптимизируют бизнес-процессы компании, повышают конверсию и привлекают новых клиентов.

За всё время работы, нами были воплощены в жизнь IT-проекты в финансово-кредиторном и автомобильном секторе, в сфере отдыха, туризма и услуг, онлайн-торговле, электронной коммерции, строительства и ИИ.

Прокачайте онлайн-направление Вашего бизнеса и выведите его на совершенно иной уровень, вместе с Webseed.ru

  • Заказов и проектов100+30% за последний год
  • Бизнес отраслей10На данный момент
  • 90%Клиентовпо рекомендациям
Все достижения
О компании Webseed.ru

Наши услуги

Создание и ведение сайтов, аудит, SEO и многое другое

Все услуги

Контакты

Наш адрес, контакты для связи и мессенджеры

Контакты Якутске

  • Режим НО: НПД
  • ФИО: Иванов Никита Эдуардович
  • ИНН: 165036260002
  • Банк: Тбанк
  • БИК: 044525974
  • Корр. счет: 30101810145250000974
  • Расчетный счет: 40817810200030621205
КонтактыГлавнаяУслугиTelegram