如何在CakePHP中注销时禁用缓存

时间:2013-05-09 08:08:51

标签: php cakephp caching cakephp-2.0 cakephp-1.3

我正在使用cakephp 2.3版本。我只需要在用户注销时禁用缓存。这是为了防止在按下后退按钮的情况下登录。

但对于所有其他场景,我不想打扰缓存机制。

现在我在AppController中使用以下函数:

public function beforeRender() {
    $this->response->disableCache();
}

但我怀疑它完全禁用了缓存过程。请帮忙!

2 个答案:

答案 0 :(得分:3)

我不相信如果用户在退出后点击后退按钮,会自动重新登录到您的网站。我猜你的问题是当用户在退出后按下后退按钮时,你希望它们被转发到登录页面。不幸的是,浏览器可能会缓存它所在的最后一页并给用户一种他们仍然登录的错觉。请放心,当他们尝试执行需要登录的内容时,会话ID存储在cookie中,将不会被识别,它们将被转发到认证页面。

一种可能的解决方法是在注销发生后将用户重定向到另一个控制器操作 - 这将引入浏览器历史记录中的其他转换。我不知道如果他们再次点击两次会发生什么。

答案 1 :(得分:1)

将此添加到应用程序的标题页:

<?php
  header("Cache-Control: no-cache, no-store, must-revalidate"); 
  header("Pragma: no-cache");
  header("Expires: 0");
?>