Laravel会话;t在请求之间保留


Laravel sessions don't remain between requests

我有两个方法,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时,我看到我的会话变量完好无损,当我加载下一个方法时,在/people/chksession执行chkSession,我只看到令牌字符串和空的闪存阵列。

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

尝试使用"file"驱动程序而不是"cookie"驱动程序。PHP配置和浏览器之间的某些东西(cookie拦截器等)可能会扰乱会话

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

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

试着去掉dd(),看看它是否有效。