我是 Laravel 的新手,我了解了模型、视图、刀片、控制器和路由以及它们如何协同工作。到目前为止,一切都很顺利。
不过,我在会议上遇到了麻烦。
当我使用 Laravel 附带的 AuthController 并通过 POST 请求点击 auth/register 时,我注册的用户的数据确实会插入到用户表中(使用 mysql),并且我确实会收到带有“位置”的响应标头重定向到 / 就像开箱即用一样。它会像应该的那样重定向。但在同一响应中,没有设置/发送“Set-Cookie”标头。 Laravel 的会话部分对我来说无法正常工作。这与 POST 到身份验证/登录的情况相同,它会正确进行身份验证并重定向到配置文件页面,但不会在响应中发回会话 cookie。
我在用着:
- 拉拉维尔 5.2.11
- PHP 5.5.9
- xubuntu 14.04 (Ubuntu)
- Linux 内核 3.19.0-42-generic
- 作曲家1.0
Laravel 所需的所有 php 模块均已安装。我正在使用 php 的内置 Web 服务器运行该应用程序。我用 sudo 运行它。我运行的确切命令是这样的:
sudo php -S localhost:8888 -t public/
所有路线均得到正确响应。
我已经尝试了安装文档推荐的两种安装 Laravel 的方法,即通过 laravel 可执行文件和composer create-project。无论如何,仍然没有设置cookie。我已经制作了 laravel 项目 mod 777 的所有文件和目录。如果有什么区别的话,应用程序密钥在 .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));
我尝试沿着照明兔子洞走下去,看看是否能找到问题,但这有点超出了我的理解范围。
任何帮助将不胜感激,谢谢!