Не удается получить данные cookie в приложении Vue.js и Laravel - PullRequest
0 голосов
/ 25 сентября 2019

Я создаю API для приложения в Laravel 6, допустим, он находится на example.com/api, а внешний интерфейс SPA, встроенный в Vue, скажем, на example.com.Мой API устанавливает cookie, когда пользователь проходит аутентификацию. Я хочу получить доступ к этому cookie в моем приложении vue.js, я установил vue-cookies Я вижу, что cookie существует в dev-tools, но когда язапустить $cookies.get('cookie_name') возвращает ноль.

Что я делаю не так?

Вот как я создаю свой cookie в API,

$payload = [
        'user_id' => $user->id,
        'name' => $user->id
    ];

    Session::put('user', $payload);
    Session::save();
    $session_id = Session::getId();

    $cookie = cookie('cookie_name', $session_id);

1 Ответ

0 голосов
/ 25 сентября 2019

По умолчанию Laravel не имеет промежуточного программного обеспечения, необходимого для файлов cookie на любом маршруте API.

Обычно API не имеют состояния и поэтому не используют файлы cookie.

Однако вы можете включить эту функцию, добавив промежуточное программное обеспечение \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class в группу API в Http\Kernel.php

 protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        // \Illuminate\Session\Middleware\AuthenticateSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
        \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
        \App\Http\Middleware\NoSuperUserOnFrontEnd::class
    ],

    'api' => [
        'throttle:60,1',
        'bindings',
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, <- add this

    ],
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...