Laravel Sanctum & NuxtJS SPA无法在浏览器中创建csrf cookie
P粉512363233
P粉512363233 2023-12-13 13:49:38
0
1
571

我在 Laravel 中有一个带有 Sanctum 的后端 API,在 NuxtJS 中有单独的存储库 SPA

我正在尝试通过 Sanctum 验证我的 SPA。我正在尝试按照 Sanctum 文档在浏览器中获取 CSRF cookie。

问题是当我调用 Sanctum 提供的 CSRF 令牌端点时,我得到了正确的响应,但没有设置 cookie。就这样,没有错误。我是否要使用 nuxt auth 或者只是普通的旧 axios 调用并不重要。

这就是我所拥有的:

域名:API -publisher.local:8080;前端-publisher.local:3000

NUXT 身份验证配置

auth: {
    strategies: {
      laravelSanctum: {
        provider: 'laravel/sanctum',
        url: 'http://publisher.local:8080',
        endpoints: {
          login: { url: '/api/v1/login', method: 'post' },
          // logout: { url: '/auth/logout', method: 'post' },
          // user: { url: '/auth/user', method: 'get' }
        }
      },
    },
  },

AXIOS 配置

axios: {
    baseURL: 'http://publisher.local:8080/api/v1', // Used as fallback if no runtime config is provided
    credentials: true,
    proxy: true,
  },

神圣.php

'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
        '%s%s',
        'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1,local:3000',
        Sanctum::currentApplicationUrlWithPort()
    ))),

会话.php

'domain' => env('SESSION_DOMAIN', '.local'),

我尝试了这些设置的不同组合和变体,但都不起作用。你们知道可能出了什么问题吗?

P粉512363233
P粉512363233

全部回复(1)
P粉311563823

我想我已经明白了这一点。我让它工作了。

因此 .local 不能是顶级域,我认为这可能是问题的一部分,但我不确定。

将域名更改为旧的 localhost 可以解决问题,但此解决方案有一个问题。由于某些我不知道的原因,无论我调用哪个端点,我都会在对 API 的任何调用中自动获取 XSRF cookie。奇怪。

最有效的方法是将域名更改为 api.publisher.compublisher.com,然后更改 Sanctum 文档中的所有设置。

对域名要格外小心,确保它们匹配并且设置正确。重新配置那个东西非常容易,但很难诊断它!

希望有帮助!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板