环境
问题
我编写了两条小测试路由(网络路由):
Route::get('/test/login', function (){
auth()->login(\App\User::find(1));
// dump('hello');
return response()->json(['msg'=>'login succeed!']);
});
Route::get('/test/me', function (){
return response()->json(auth()->user());
});当我执行GET /test/login,然后执行GET /test/me时,用户数据将按预期返回。
但是,如果我取消注释转储部件dump('hello');,然后按照与上面相同的顺序,将获得空数据 for GET /test/me。
顺便说一下,我使用“file”作为会话驱动程序。
问题
我想知道var_dump/dump/dd为什么以及如何使auth()->login()不能正常工作?
发布于 2018-06-08 04:57:23
我找到了一个解释这个问题的答案。请参阅腊肠.答案
一旦您发送了一些要在浏览器中显示的内容,您就不能再发送标题了。Var_dump(转储,或dd)将发送响应头(没有cookie),因此在该响应之后cookie无法工作,因为您不能再发送响应了。
在我的例子中,登录问题最终是关于会话/ cookie的,如果响应头中没有设置laravel_session cookie,那么会话和基于会话的登录就不能正常工作。
https://stackoverflow.com/questions/50752252
复制相似问题