所以我的网站(React的Laravel)似乎不能按照我想要的方式工作。我使用Laravel Sanctum进行(SPA,所以cookie,而不是token)身份验证。如果我使用正常的注销,它看起来会注销,但在刷新之后,我仍然通过身份验证。我创建了自己的注销控制器来检查,但奇怪的是,它似乎注销…但在复习之后我就不是了。带有我尝试过的东西的控制器:
Auth::guard('web')->logout();
if (!Auth::check()) {
dump('Logged out!');
}
$sessionId = $request->session()->getId();
if($request->session()->invalidate()){
dump('Session invalidated!');
}
$request->session()->regenerate();
$request->session()->regenerateToken();
$request->session()->flush();
$request->session()->remove($sessionId);
session_unset();
Session::flush();
Session::forget($sessionId);
$cookie = Cookie::forget($sessionId);
我知道所有这些都是夸大其词,但这只是为了展示我尝试过的东西(我在网上找到的类似问题的答案)。奇怪的是,转储显示我已注销,会话已失效……但是,当我调用Axios进行检查时(或者在刷新之后),我仍然处于登录状态。我检查了一个Axios调用,它输出了Auth::user();
我尝试使用forget删除会话cookie,但这对cookie也没有任何影响。看起来会话并没有失效(我认为),但是转储文件说它是无效的。我遗漏了什么?任何帮助都是非常感谢的!
发布于 2021-03-26 02:52:46
解决了,所以我尝试了一些其他的东西。显然,重定向在其中起到了一定作用!没有触发Laravel重定向,因为我在前端注销方法上使用了React重定向。删除前端重定向触发了后端Laravel重定向...然后,在刷新之后,我确实被注销了!耶。另外,转储信息(使用php中的dump() )会阻止成功注销!
https://stackoverflow.com/questions/66762808
复制相似问题