@tester_toster

Laravel — как авторизировать пользователя из под api в web?

Для работы с приложениями через api установил Laravel passport
/config/auth.php:
'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'passport',
            'provider' => 'users', 
        ],
    ],

Сделал получение токена по паролю и email, прикрепил стандартный трейт для того чтобы после авторизации в web - можно было работать с апи запросами.

Появилась проблема: есть App\Http\Controllers\Api\v1RegistrationController,
У него гуард - passport.

В нем код:
$user = User::create([
             'name'          => $request->has('name') ? $request->name : '',
            'first_name'    => $request->has('first_name') ?? $request->first_name,
            'last_name'     => $request->has('last_name') ?? $request->first_name,
            'email'         => $request->email,
            'password'      => bcrypt($request->password),
        ]);
        Auth::login($user);


Необходимо, чтобы после того как пользователь создался из под api - он авторизовался в web, так как с api еще работает web приложение, но этого не происходит - Auth::guest() показывает false, но после перезагрузки страницы - авторизация пропадает.
Необходимо для того чтобы пользователь из браузера зарегистрировавшись по api мог после редиректа на главную быть авторизованным.
Как такое реализовать?
Пробовал:
Auth::guard('web')->login($user);
Но после перезагрузки страницы авторизация пропадает, хотя если пробовать так сделать из под web контроллеров - все работает
  • Вопрос задан
  • 2167 просмотров
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
А почему шиворот навыворот от "обычного" сценария?

Обычно регистрируются, логинятся, а потом уже можно выдавать токены и все что угодно для работы с апи.

В API-то зачем его логинить, оно под такое вообще не расчитано.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы