在测试我的应用程序并尝试创建新用户时,在提交表单时出现错误 419。
如果我使用帮助程序Auth::loginUsingId(x)为现有用户登录,dd(auth()->user())则成功,但是当我重定向到另一个页面时,用户不再登录。例如,运行以下代码,您最终会被重定向到/login:
Route::get('/logInAs/{id}', function ($id) {
Auth::loginUsingId((int) $id);
dd(\auth()->user());
return redirect()->route('dashboard');
});
我会分享更多代码,但我不确定此时会有什么用处?
到目前为止,我可能已经花了大约七个小时试图解决这个问题。它把我逼上墙了!
该应用程序在其他环境中运行良好,例如staging. 我什至甚至从 github 重新下载它作为全新安装(以防我在vendor目录中搞乱并更改了某些内容),但这并没有解决它。
我在 Chrome 上遇到了同样的问题,在 Chrome 上使用不同的登录用户,在 Chrome 上使用隐身模式,使用 Firefox,以及valet share在另一台设备(如手机)上使用和访问我的本地版本,所以我不认为这样做带有浏览器缓存。
当其他从事该项目的开发人员在他们的机器上本地运行它时,我没有收到有关此问题的报告,所以它似乎只是我的本地环境。
我已经尝试过各种改变并且CACHE_DRIVER没有快乐,但我开始失去生活的意愿,所以我真的不知道我在那里做的事情是否正确 - 如果可以,请帮助!SESSION_DRIVER.env
编辑以添加更多细节:
dashboard路由中间件:
Route::middleware(['auth:sanctum', 'verified'])->group(function(){
Route::get('/dashboard', DashboardController::class)->name('dashboard');
});
如果我删除中间件,那么我只会收到一个错误,user即仍然没有保持登录状态。nulldashboard.blade.phpuser
自定义中间件:
class VerifyUserIsMerchant
{
public function handle(Request $request, Closure $next)
{
if ($request->user()->isMerchant()) {
return $next($request);
}
throw new AccessDeniedHttpException('You must be a merchant to access this page');
}
}
如果我dd($request->user())在这个中间件中返回null.