如何修复未在 laravel 9 中设置的 Cookie?

how to fix Cookies not setting in laravel 9?

我正在尝试为令牌设置一个 httpOnly cookie,但它没有保存 cookie。

我正在尝试通过 OTP 登录用户,当用户输入正确 OTP 时,我会在应用程序中登录他们,到目前为止我已经完成了如下操作:

$user = User::where('mobile_number', $request->mobileNumber)->first();

if ($user) {
    Auth::login($user);

    $token = $user->createToken('authToken')->accessToken;

    $cookie = cookie('token', $token, 60 * 24 * 24); // 24 day

    return response([
        'status' => 'success',
        'message' => 'loggedIn',
        'user' => auth()->user(),
    ])->withCookie($cookie);

}else{
    return response()->json([
        'status' => 'success',
        'message' => 'notExist'
    ], 200);
}

用户将成功登录,如果我刷新页面我应该再次登录,当我检查 Application\Storage\Cookies in Firefox and Storage\Cookies in chrome 时没有返回 cookie 的迹象(即使我不刷新页面 cookie 也不会完全保存了)。

我正在使用 Laravel Passport,到目前为止,我认为 VUE 方面应该没有任何问题,因为 cookie 甚至没有保存在浏览器中。

我也尝试添加更多 cookie 来测试是否一切正常,但同样的问题再次发生,浏览器中没有任何保存。

我也在 Whosebug 中尝试过其他解决方案,但它们没有用。

编辑 01:删除了刷新页面... 编辑 02:Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse 和队列测试。

使用 Laravel 提供的 Cookie Facade:

use Illuminate\Support\Facades\Cookie;
 
Cookie::queue('token', $token, 60 * 24 * 24);

在您的 Kernel.php 中搜索 AddQueuedCookiesToResponse,如果有评论,请取消评论。

好吧,我发现了,看起来问题实际上来自 VUE 方面。应用程序 URLenv 文件中默认为 127.0.0.1,但在 VUE 中它通过 Localhost 调用 API,它可以正常工作,但 cookie由于此冲突没有保存,当我将其更改为 127.0.0.1 作为 axios 中的默认 baseURL 时,它起作用了。

在 $except 中添加 cookie 名称。

/app/Http/Middleware/EncryptCookies.php