Не могу установить cookie для API-интерфейса - PullRequest
0 голосов
/ 01 марта 2019

Выполнение сервиса с бэкэндом (laravel) и внешним SPA (vue.js, vue-cli 3).Мне нужно сделать авторизацию через httpOnly cookie (не localStorage).Я использую tymondesigns / jwt-auth в качестве пакета api auth.

Моя среда:

Мой маршрут входа в систему/api/auth/login, метод контроллера:

public function login()
    {
        $credentials = request(['email', 'password']);
        $user = User::where('email','=',$credentials['email'])->first();
        if (!$user || !$token = auth()->claims(['sub' => $user->id, 'csrf-token' => str_random(32) ])->attempt($credentials)) {
            return response()->json(['error' => 'Unauthorized'], 401);
        }
        return response()
            ->json('success')
            ->withCookie('token', $token, config('jwt.ttl'), ".brideplanner.test", null, false, false);
    }

Но когда я пытаюсь отправить запрос в API, в хранилище cookie нет элемента token.Что здесь не так?Почему нет токена?Что мне делать?

UPD: Я проверил запрос через почтальона и получил токен:

Set-Cookie →token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9icmlkZXBsYW5uZXIudGVzdFwvYXBpXC9hdXRoXC9sb2dpbiIsImlhdCI6MTU1MTM5NDMwNCwiZXhwIjoxNTUxMzk1MjA0LCJuYmYiOjE1NTEzOTQzMDQsImp0aSI6Im9uU1NtWEpSU0prR3NKc3giLCJzdWIiOjEsInBydiI6Ijg3ZTBhZjFlZjlmZDE1ODEyZmRlYzk3MTUzYTE0ZTBiMDQ3NTQ2YWEiLCIwIjoic3ViIiwiMSI6ImNzcmYtdG9rZW4iLCJjc3JmLXRva2VuIjoiTE9jSDFCWG9ITFJBMjlFYTg2MG1XQXhrVnpTR2gzT2oifQ.mnR4C6bwMIVptU64eZ6tN-gCYyFEuCIk_dm6dJsXrLY; expires=Thu, 28-Feb-2019 23:06:44 GMT; Max-Age=900; path=.brideplanner.test; domain=.brideplanner.test; httponly

Но когда я отправляю запрос из моего SPA (http://app-test.brideplanner.test:81/), это идет не так.

1 Ответ

0 голосов
/ 01 марта 2019

При установке Laravel по умолчанию для маршрутов api не включено промежуточное программное обеспечение (Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse), которое обрабатывает файлы cookie.

Вы можете включить это промежуточное ПО на своих маршрутах API, если вам действительно нужна аутентификация на основе файлов cookie, но обязательно прочтите отличий .

...