Laravel会议不会在请求之间保持不变

时间:2014-10-13 14:58:08

标签: php laravel

我有两个方法,setSession和chkSession。

public function setSession()
{
    Session::put('one', $person['id']);
    Session::put('two', $person['firstName']);
    Session::put('three', $person['lastName']);

    return dd(Session::all());      
}

public function chkSession()
{
    dd(Session::all());
} 

当我在/people/setsession执行setSession时,我看到我的会话变量完好无损,当我加载下一个方法时,chkSession在/people/chksession,我只看到令牌字符串和空闪存数组。

为什么这些变量不在请求之间保留?

1 个答案:

答案 0 :(得分:3)

尝试使用'file'驱动程序而不是'cookie'驱动程序。 PHP配置和浏览器之间的某些内容(cookie阻止程序等)可能会破坏会话。

我想我可能知道为什么,我前段时间遇到了类似的问题:你正在调用dd(),它调用了die(),此时Laravel还没有将会话数据写入存储器。它的作用是将会话数据临时存储在内存中,并且只有在执行完所有内容后,它才会将会话数据转储到存储中(文件,cookie,redis等)。

这意味着当您在setSession()中打印出会话内容时,Laravel会打印出正确的值,因为它仍然在内存中,即使它们尚未写入存储。但是在chkSession()中,内存已被擦除,因此Laravel不再拥有内存中的数据。

尝试摆脱dd()并查看它是否有效。