gpt4 book ai didi

reactjs - 为什么我的 CSRF token 与 Laravel 和 Sanctum 不匹配?

转载 作者:行者123 更新时间:2023-12-05 08:10:45 27 4
gpt4 key购买 nike

我有一个 Laravel 后端和 React 前端,我在其中使用 sanctum 进行 SPA 身份验证,并使用 Axios 发出请求。我在 http://localhost:8000 上使用 localhost,后端在 http://localhost:8000 上,前端在 http://localhost:3000 上。

这是我的前端代码:

const apiClient = axios.create({
baseURL: `http://localhost:8000`,
withCredentials: true,
});

let config = {
headers: {
'Content-Type': 'application/json'
},
}

export async function login(credentials: LoginCredentials) {

return apiClient.get('sanctum/csrf-cookie', config).then(response => {
apiClient.post('/api/v1/login', JSON.stringify(credentials));
});
}

我的 api 中间件类是这样的

'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
'throttle:api',
],

这些是我的密室配置;

'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
'%s%s',
'localhost,localhost:3000,localhost:3000/api/v1/login,127.0.0.1,127.0.0.1:8000,::1',
env('APP_URL') ? ','.parse_url(env('APP_URL'), PHP_URL_HOST) : ''
))),

SESSION_DOMAIN=http://localhost:3000

最后是我的 cors 中间件

    'paths' => ['api/*', 'sanctum/csrf-cookie'],

'allowed_methods' => ['*'],

'allowed_origins' => ['*'],

'allowed_origins_patterns' => [],

'allowed_headers' => ['*'],

'exposed_headers' => [],

'max_age' => 0,

'supports_credentials' => true,

我很确定我遗漏了一些小东西。任何帮助我都会感激

最佳答案

在你的后端环境中设置它

SESSION_DOMAIN=localhost
SANCTUM_STATEFUL_DOMAINS=localhost

关于reactjs - 为什么我的 CSRF token 与 Laravel 和 Sanctum 不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70248087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com