1

为什么即使我忘记了一个会话,当我按下返回按钮时它仍然会打印它的值?这是 laravel 中的错误还是我的代码有问题?

这就是我忘记会议的方式

session()->forget('user_role');
session()->forget('user_id');

但即使我这样做了,当我按下后退按钮时,它仍然会在控制台中打印值。我已经尝试过其他方法,例如 pull 方法和重新分配新值,但问题仍然存在。

4

1 回答 1

0

session()->forget('user_role')表现不错。但是,您仍然可以查看/打印,因为浏览器已经缓存了该页面,而不是进行网络调用,请求只是加热缓存。

要识别和禁用缓存一段时间,请打开开发工具并在开发工具打开时禁用缓存并刷新页面。之后,您将无法再看到存储在会话密钥中的数据。供您参考,您看到的页面是浏览器缓存的页面。如果您想检查是否正在清洗的值,这是临时解决方案。但是,如果您不希望您的用户有这种行为,您可以尝试给定的解决方案。

对于基于浏览器的缓存控件,您应该尝试使用给定的页面响应设置Cache-Control,Pragma和标头,Expires

$contents = View::make('viewname');
return response($contents)-> withHeaders([
    'Cache-Control' => 'no-cache, no-store, must-revalidate',
    'Pragma' => 'no-cache',
    'Expires' => 0
]);

这将允许您控制在浏览器中缓存的页面。设置Expires为 0 意味着页面永远不会被缓存。您可以在此处参考官方 MDN 文档

如果问题仍然存在或其他解决方案没有给出令人满意的结果,您还应该尝试禁用 Laravel 刀片视图缓存。

于 2020-02-14T08:19:25.237 回答