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 中的注销功能的主要内容,如果未能解决你的问题,请参考以下文章