codeigniter 中的注销功能

Posted

技术标签:

【中文标题】codeigniter 中的注销功能【英文标题】:logout feature in code igniter 【发布时间】:2011-07-29 12:42:32 【问题描述】:

我开始在我的项目中使用 codeigniter。我的网站有用户身份验证系统。我已经看过 nettuts 的视频以获取登录信息。我很困惑为什么注销无法正常工作。

我的登录控制器中有以下注销功能。

function logout() 
        $this->session->sess_destroy();
        redirect('main');
    

如果我单击注销按钮,我会将用户重定向到主页。但是在将用户重定向到主页后,如果单击浏览器上的后退按钮,我将在页面顶部看到注销和我的名字。我需要一些关于哪里出错的帮助,或者我的控制器中是否缺少任何重要的代码

提前致谢

编辑

我想我找到了解决方案。我应该将以下代码附加到适当的控制器中

$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate, no-transform, max-age=0, post-check=0, pre-check=0");
$this->output->set_header("Pragma: no-cache"); 

【问题讨论】:

【参考方案1】:

我认为这是浏览器缓存问题。如果您单击返回,您实际上会看到缓存页面,即您登录时的样子。

在回到退出前页面后尝试按 F5。它现在应该显示您已注销。

【讨论】:

是的,你是对的。这不是安全漏洞吗。当我点击注销时,虽然我点击了后退按钮,但我认为我的代码不应该让用户看到缓存页面,我也相信。如果用户在退出前已经看到了一些重要信息,如果一些用户点击了后面的页面,他将看到最后浏览的页面。如何摆脱这个问题。 您可以尝试在所有登录页面上不放置缓存标头,这是我目前能想到的唯一解决方案...实际上大多数网站似乎都有这个问题,包括这个。 将@amit 的建议整合到您的答案中? 将@amit 的建议整合到您的答案中?【参考方案2】:

向我的主构造函数添加标题解决了我的 IE7 问题:

$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate, no-transform, max-age=0, post-check=0, pre-check=0");
$this->output->set_header("Pragma: no-cache"); 

【讨论】:

以上是关于codeigniter 中的注销功能的主要内容,如果未能解决你的问题,请参考以下文章

注销后的 CodeIgniter 后退按钮

在 Codeigniter 上注销

在 codeigniter 中注销

如何防止codeigniter中的自动注销?

CodeIgniter 4 重定向功能不起作用

codeigniter 中的会话令牌更改