Man*_*ate 1 cookies laravel vue.js laravel-api laravel-sanctum
Laravel sainttum 对我来说有点头疼,因为我花了几个小时试图弄清楚为什么sanctum/csrf-cookie路线没有返回内容。最初相同的路由返回 404 not found 但在添加'prefix' => 'api/sanctum' config/sanctum.php之后它似乎可以工作,除了它不输出任何内容并且在我的浏览器中没有设置 cookie 。
这是我的一些代码
.env
SANCTUM_STATEFUL_DOMAINS=localhost:8080
SPA_URL=http://localhost:8080
SESSION_DOMAIN=localhost
Run Code Online (Sandbox Code Playgroud)
--config/cors.php
SANCTUM_STATEFUL_DOMAINS=localhost:8080
SPA_URL=http://localhost:8080
SESSION_DOMAIN=localhost
Run Code Online (Sandbox Code Playgroud)
轴
'paths' => [
'api/*',
'login',
'logout',
'register',
'user/password',
'forgot-password',
'reset-password',
'sanctum/csrf-cookie',
'user/profile-information',
'email/verification-notification',
],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => true,
Run Code Online (Sandbox Code Playgroud)
完成所有这些后,如果我尝试使用生成令牌
export const authClient = axios.create({
baseURL: process.env.VUE_APP_API_URL,
withCredentials: true, // required to handle the CSRF token
});
Run Code Online (Sandbox Code Playgroud)
我得到响应,我还按照文档204 no content中的说明在 kernel.php 中添加了 api 中间件,但仍然不会设置 cookie。当我尝试向受 sainttum i 保护的另一条路线发出请求时。我还运行了全新安装的 laravel,清除了我的浏览器历史记录,检查了邮递员中的端点,但仍然有相同的异常419 token mismatchphp artisan optimize204 and 419
小智 7
我在同一个问题上苦苦挣扎了好几天,然后找到了一种有效的方法。所以 :
成功时,路由'/sanctum/csrf-cookie'会返回 204 响应,然后您必须post使用凭据发送请求。我曾经得到过 419 回复状态。
所以在关注 laravel 文档之后,我添加了以下内容:
withCredentials标头设置为true.env
SESSION_DRIVER=cookie
SESSION_DOMAIN='.localhost'
SANCTUM_STATEFUL_DOMAINS='localhost,127.0.0.1'
Run Code Online (Sandbox Code Playgroud)
.kernel.php
添加到您的中间件数组中:\Illuminate\Session\Middleware\StartSession::class
| 归档时间: |
|
| 查看次数: |
8879 次 |
| 最近记录: |