2016-01-24 106 views
3

我是Laravel的新手,我了解了模型,视图,刀片,控制器和路由以及它们如何一起工作。到目前为止,一切工作都顺利进行。Laravel 5.2.11,会话不工作,会话cookie未设置

虽然我遇到了麻烦。

当我使用Laravel附带的AuthController并通过POST请求命中auth/register时,我注册的用户的数据会插入到users表中(使用mysql),我确实会收到响应“位置”标题重定向到/喜欢它开箱即用。它应该像它应该重定向。但是在相同的响应中没有“Set-Cookie”头部集/发送。 Laravel的会话部分对我来说工作不正常。这与POST验证/登录相同,验证正确并重定向到配置文件页面,但不会在响应中发回会话cookie。

我使用:

  • Laravel 5.2.11
  • PHP 5.5.9
  • 是Xubuntu 14.04(Ubuntu的)
  • Linux内核3.19.0-42泛型
  • 作曲1.0

Laravel要求安装所有php模块。我正在用php内置的web服务器运行应用程序。我用sudo运行它。我运行的确切命令是这样的:

sudo php -S localhost:8888 -t public/ 

所有路由正在正确响应。

我已经尝试过通过laravel可执行文件和作曲程序创建项目安装Laravel安装文档建议的两种方法。仍然没有设置饼干的方式。我已经制作了laravel project mod 777的所有文件和目录。如果有任何区别,应用程序密钥将设置为.env。

config/session.php文件正在使用会话的文件驱动程序。 设置会话后,storage/framework/sessions目录中没有会话文件。

当我尝试设置会话自己与会话功能就像它在文档中指出:

session(['sesskey' => 'somevalue']); 

同样没有“设置Cookie”头响应中发送和没有创建会话文件。没有报错的消息,我应该添加。

当我设置与会话功能的会话密钥像上面我可以得到该值重新但是和回声回浏览器,像这样:

echo session('sesskey'); 

因此它似乎至少保存在PHP的记忆。

当我尝试使用withCookie方法设置cookie,我得到与Set-Cookie头设置适当的响应:

return response()->view('welcome')->withCookie(cookie("test", "val" , 3600)); 

我试着下去的照射兔子洞,看看我能找到一个问题,但这是在我头脑atm。

任何帮助将非常appriciated,谢谢!

+0

我假设所有这些路线都应用了“网络”中间件? – lagbox

+0

路线文件确实包含是的。 –

+0

和所有工作不正常的路由都在该组中? – lagbox

回答

8

在laravel 5.2,您需要使用您的问题 “网络” 的中间件,像

Route::group(['middleware' => ['web']], function() { 
// 
}); 
+0

谢谢你。是的,将要使用会话的路线必须包含在网络中间件的功能中。我想初学者应该通过laravel doc材料和网站上的教程。我之前已经看到过这个问题,但有关会话不会持续,但我没有看到任何人提到网络中间件的答案。 –

+0

你是对的@LarryLawless每个初学者都应该浏览laravel doc材料和网站上的教程。 –

0

使用中间件请求\照亮\会议\中间件\ StartSession ::类

Route::group(['middleware' => [\Illuminate\Session\Middleware\StartSession::class]], function() { 

});