我是Laravel的新手,我已经了解了模型,视图,刀片,控制器和路由以及它们如何协同工作。到目前为止,一切都很顺利。
我遇到了会话问题。
当我使用Laravel附带的AuthController并使用POST请求命中auth / register时,我注册的用户的数据会插入到users表中(使用mysql),我确实得到了一个响应“位置”标题重定向到/喜欢它开箱即用。它会像它应该重定向。但在相同的响应中,没有设置/发送“Set-Cookie”标头。 Laravel的会话部分对我不起作用。对于POST到auth / login,它是相同的,它正确地进行身份验证并重定向到配置文件页面,但在响应中没有发回会话cookie。
我正在使用:
安装了Laravel所需的所有php模块。我用php内置的web服务器运行应用程序。我用sudo运行它。我运行的确切命令是:
sudo php -S localhost:8888 -t public/
正确回应所有路线。
我已经通过laravel可执行文件和composer create-project尝试了安装文档推荐的两种安装Laravel的方法。仍然没有设置cookie。我已经制作了laravel项目mod 777的所有文件和目录。如果有任何不同,app键设置为.env。
config / session.php文件正在使用会话的文件驱动程序。 设置会话后,storage / framework / sessions目录中没有会话文件。
当我尝试使用会话功能设置会话时,如文档中所述:
session(['sesskey' => 'somevalue']);
同样,在响应中没有发送“Set-Cookie”标头,也没有创建会话文件。没有报告任何错误消息,我应该添加。
当我使用上面的会话功能设置会话密钥时,我可以返回该值,然后将其回传给浏览器,如下所示:
echo session('sesskey');
所以它似乎至少在php的记忆中保存它。
当我尝试使用withCookie方法设置cookie时,我确实得到了Set-Cookie标头集的正确响应:
return response()->view('welcome')->withCookie(cookie("test", "val" , 3600));
我试着沿着照亮的兔子洞走下去,看看我是否能找到问题,但这有点像我的头脑。
任何帮助都会非常有用,谢谢!
答案 0 :(得分:9)
在laravel 5.2中,您需要使用“web”中间件来解决您的问题,例如
Route::group(['middleware' => ['web']], function () {
//
});
答案 1 :(得分:0)
将中间件用于请求\ Illuminate \ Session \ Middleware \ StartSession :: class
Route::group(['middleware' => [\Illuminate\Session\Middleware\StartSession::class]], function () {
});