laravel的Session flush和forget方法无法按预期工作

时间:2016-10-04 16:32:33

标签: php laravel session

我尝试使用以下方法从会话中删除值:

Session::forget('value')

但它没有删除!

然而,当我尝试使用save这样的方法时:

 Session::forget('value')
 Session::save()
它工作了! (即,该值已从会话中删除。)

请 - 我做错了什么?使用saveSession::flush()时,我在Laravel文档中看不到Session::forget()方法。

3 个答案:

答案 0 :(得分:8)

save()方法将动态执行对文件的写入。

在您向所有请求输出内容之前,您的应用程序似乎没有调用Session :: save()。

如果没有调用此方法,会话文件将不会使用新值进行更新,并且在下次访问时它们仍然存在。

如果您希望确保删除或添加内容并且更改仍然存在,则始终调用Session :: save()非常重要。

答案 1 :(得分:2)

完全缓存清除(使用命令行或代码):

php artisan cache:clear
Artisan::call('cache:clear');

+完整会话刷新:

Session::flush();

通过此方法,您可以清除所有会话数据。

答案 2 :(得分:0)

我使用Session::save()方法可以很好地保存会话数据。但是当我使用Session::flush()刷新会话时,它不会清除存储在Laravel会话中的所有数据。 Session::forget('value')可以很好地清除会话特定值。