我有一个后台API在Laravel与Sanctum,和独立的存储库SPA在NuxtJS
我正在尝试用Sanctum验证我的SPA。我正试图在浏览器中获得CSRF cookie按照Sanctum文档。
问题是,当我调用Sanctum提供的CSRF令牌端点时,我得到了正确的响应,但没有设置cookie。就像这样,没有错误。不管我是使用next函数还是简单的axios调用
这是我的:
domain: API - publisher.local:8080;前端- publisher.local:3000
next AUTH CONFIG
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,
},
sanctum.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()
))),
session.php
'domain' => env('SESSION_DOMAIN', '.local'),
我尝试了这些设置的不同组合和变化,但都不起作用。你们知道什么是错误的吗?
我想我明白了。我让它工作了。
所以.local
不能成为顶级域名,我认为这可能是问题的一部分,但我不确定。
将域更改为仅疼痛旧localhost
确实奏效,但此解决方案有一个问题。由于一些我不知道的原因,无论调用哪个端点,我都会在调用API时自动获得XSRF cookie。奇怪。
将域更改为api.publisher.com
和publisher.com
,然后是Sanctum文档中的所有设置。
只是要超级小心的域名,并确保他们匹配和设置是正确的。它是超级容易重新配置的东西,很难诊断它!
希望有帮助!