繁体   English   中英

无法在 Vue.js 和 Laravel 应用程序中获取 cookie 数据

[英]Cannot get cookie data in Vue.js and Laravel application

我正在构建一个 api 用于 Laravel 6 可以说它位于example.com/api和 SPA 前端内置在 vue 可以说它位于example.com 我的 API 在用户通过身份验证时设置了一个 cookie 我想在我的 vue.js 应用程序中访问该 cookie,我已经安装了vue-cookies我可以看到 cookie 存在于开发工具中,但是当我运行$cookies.get('cookie_name')它返回 null。

我究竟做错了什么?

这是我在 API 中创建我的 cookie 的方法,

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

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

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

默认情况下,Laravel 在任何 api 路由上都没有 cookies 所需的中间件。

通常 API 是无状态的,因此不使用 cookies。

但是,您可以通过将中间件\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::classHttp\Kernel.php中的 api 组来启用此功能

 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

    ],
];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM