laravel 会话刷新和忘记方法无法按预期工作
Posted
技术标签:
【中文标题】laravel 会话刷新和忘记方法无法按预期工作【英文标题】:laravel's Session flush and forget methods not working as expected 【发布时间】:2017-02-12 22:15:09 【问题描述】:我尝试使用以下方法从会话中删除一个值:
Session::forget('value')
但它没有删除!
但是,当我尝试像这样使用save
方法时:
Session::forget('value')
Session::save()
成功了! (即该值已从会话中删除。)
拜托-我做错了什么?使用 Session::flush()
和 Session::forget()
时,我在 Laravel 文档中没有看到 save
方法。
【问题讨论】:
Here's save, it's not in the documentation, but it is part of the interface Session::save() 正在工作。 【参考方案1】:save() 方法实际上会执行对文件的写入。
您的应用程序似乎在根据所有请求向用户输出内容之前没有调用 Session::save()。
如果不调用此方法,则 Session 文件将不会使用新值进行更新,并且它们在下次访问时仍然存在。
如果您希望确保删除或添加内容并且更改仍然存在,请务必始终调用 Session::save()。
【讨论】:
感谢您的回答。我被Session::forget('key');
卡住了,它暂时删除了会话密钥,但在下一个请求会话密钥仍然存在。在使用 Session::save();
之后的 forget() 方法后,它永久删除了会话密钥【参考方案2】:
我使用Session::save()
方法可以很好地保存会话数据。但是当我使用Session::flush()
刷新会话时,它不会清除存储在 Laravel 会话中的所有数据。 Session::forget('value')
可以很好地清除会话特定的值。
【讨论】:
【参考方案3】:完全清除缓存(使用命令行或代码):
php artisan cache:clear
Artisan::call('cache:clear');
+ 完整会话刷新:
Session::flush();
通过此方法,您可以清除所有会话数据。
【讨论】:
在使用dd($session)
进行调试时,Session::flush()
并没有为我永久清除会话,直到我还调用了save()
方法。 (正如公认的答案所暗示的那样)以上是关于laravel 会话刷新和忘记方法无法按预期工作的主要内容,如果未能解决你的问题,请参考以下文章
laravel 4持续数据正在进行 - jquery ajax提交