如何修复未在 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
方面。应用程序 URL
在 env
文件中默认为 127.0.0.1
,但在 VUE
中它通过 Localhost
调用 API
,它可以正常工作,但 cookie由于此冲突没有保存,当我将其更改为 127.0.0.1
作为 axios
中的默认 baseURL
时,它起作用了。
在 $except 中添加 cookie 名称。
/app/Http/Middleware/EncryptCookies.php
我正在尝试为令牌设置一个 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
方面。应用程序 URL
在 env
文件中默认为 127.0.0.1
,但在 VUE
中它通过 Localhost
调用 API
,它可以正常工作,但 cookie由于此冲突没有保存,当我将其更改为 127.0.0.1
作为 axios
中的默认 baseURL
时,它起作用了。
在 $except 中添加 cookie 名称。
/app/Http/Middleware/EncryptCookies.php