Задать вопрос
@MasterCopipaster

Как работает авторизация в laravel?

Всем привет, у меня laravel 5.8.38 - и возник вот какой вопрос.
В ларе есть стандартный метод
Auth::login($user,true);
Который логинит пользователя из контролера, если я делаю так
Auth::login($user,true);
dump(auth()->user());

То auth()->user() выводит нужного пользователя все ок, но блин как он его логинит? как он запоминает что этот пользователь авторизован? Я думал что это делается по сессионым кукам, но кук нет вообще.
после успешной авторизации я возвращаю json
return response()->json(['user' => $user], 200);
По идее с ответом json должны приехать сессионные куки но их нет вообще. WTF? Должен ли я как то руками выставлять эти куки? тогда зачем нужен Auth::login ?
Собственно сам контроллер:
$code = $request->code;
        preg_match("/(7[0-9]{10})/", $request->phone, $matches);
        $phone = $matches[0];
        $user = User::query()
            ->with('orders.items.product')
            ->where('phone', $phone)
            ->where('sms_code', $code)
            ->first();

        $token = Str::random(60);
        $token = hash('sha256', $token);
        if ($user) {
            // Log in current user
            $user->update([
                'token' => $token,
                'sms_code' => null
            ]);
            Auth::login($user,true);
            return response()->json(['user' => $user], 200);
        } else {
            return response()
                ->json(['message' => 'Go away, pls'. $phone], 404)
                ->withCookie(cookie('token', $token, 0));
        }
  • Вопрос задан
  • 1051 просмотр
Подписаться 2 Простой 3 комментария
Решения вопроса 1
Fragster
@Fragster
помогло? отметь решением!
Если драйвер - session, то где-то в сессии хранится, если драйвер другой - то в зависимости от него. Либо basic авторизация по каждого запроса, либо токены (например passport или sanctum), либо даже можно самому что-нибудь изобрести и прибивать, например, по ip+fingerprint браузера
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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