【问题标题】:Cannot get cookie data in Vue.js and Laravel application无法在 Vue.js 和 Laravel 应用程序中获取 cookie 数据
【发布时间】:2020-01-25 20:08:50
【问题描述】:

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

我做错了什么?

这是我在 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 文件中的路由是无状态的(就像大多数 API 一样),因此不要将 cookie 传回响应。
  • 您能展示一下您配置vue-cookies 的方式吗?应该是this.$cookies.get('cookie_name')

标签: php laravel vue.js cookies


【解决方案1】:

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

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

但是,您可以通过将中间件 \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class 添加到 Http\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

    ],
];

【讨论】:

  • 谢谢 - 在这种情况下,可能有更好的方式来构建我不知道的项目。我想创建一个 SPA 前端,它可以与 cookie 和后端服务交互,而不是真正意义上的 API。有没有比我现在做的更好的方法。这基本上是 web.php 中为前端服务 SPA 的一条包罗万象的路线
  • 这是一个全新的问题,如果您认为已回答,请将其标记为已回答。
猜你喜欢
  • 2021-06-14
  • 2023-04-05
  • 2022-01-03
  • 2020-07-17
  • 1970-01-01
  • 2021-03-20
  • 2019-04-16
  • 2020-01-21
  • 1970-01-01
相关资源
最近更新 更多