Laravel 5.2.11,会话无效,会话cookie未设置

时间:2016-01-24 11:14:12

标签: php laravel session cookies laravel-5.2

我是Laravel的新手,我已经了解了模型,视图,刀片,控制器和路由以及它们如何协同工作。到目前为止,一切都很顺利。

我遇到了会话问题。

当我使用Laravel附带的AuthController并使用POST请求命中auth / register时,我注册的用户的数据会插入到users表中(使用mysql),我确实得到了一个响应“位置”标题重定向到/喜欢它开箱即用。它会像它应该重定向。但在相同的响应中,没有设置/发送“Set-Cookie”标头。 Laravel的会话部分对我不起作用。对于POST到auth / login,它是相同的,它正确地进行身份验证并重定向到配置文件页面,但在响应中没有发回会话cookie。

我正在使用:

  • Laravel 5.2.11
  • PHP 5.5.9
  • xubuntu 14.04(Ubuntu)
  • Linux内核3.19.0-42-generic
  • Composer 1.0

安装了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));

我试着沿着照亮的兔子洞走下去,看看我是否能找到问题,但这有点像我的头脑。

任何帮助都会非常有用,谢谢!

2 个答案:

答案 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 () {

});