我正在为使用CI创建的系统进行安全登录,因为应该有系统的管理员控制权。如何在Codeigniter中实现安全登录/注销?
我的做法是,我做了一个文件名为MY_System.php应用/核心目录,我得到了这行代码:
class MY_System extends CI_Controller
{
function __construct()
{
parent::__construct();
}
}
然后我也有Admin_Controller.php在那里我得到这个代码:
class Admin_Controller extends MY_System
{
function __construct()
{
parent::__construct();
$this->is_logged_in();
}
function is_logged_in()
{
$is_logged_in = $this->session->userdata('is_logged_in');
if(!isset($is_logged_in) || $is_logged_in != true)
{
redirect(base_url(). 'login');
}
}
}
上述2个文件保存在框架的核心文件夹内。
,而在系统的控制器目录中,我得到了几个控制器让我们说人的情况下,我有这样的代码:
class Person extends Admin_Controller
{
function __construct()
{
parent::__construct();
}
}
我相信,通过这种方式,只要是系统的页面可应受到限制我将使用Admin_Controller作为类的父级,以便用户不能直接访问页面。
现在,我的问题是,因为我会单击注销,会话将被销毁,用户的数据被清空,因此,用户必须重定向到登录页面,但它不会这样,因为每当我点击注销后右键单击浏览器的后退按钮,用户所在的上一页仍会显示,但当我点击这些页面上的链接时,此时用户将被重定向到登录页面。我想要的是,单击注销后,如果他/她尝试并单击浏览器的后退按钮,他/她必须重定向到登录页面。
有没有人知道我的问题的解决方案?任何帮助表示赞赏。提前致谢。
嗨@finalfrag。我很抱歉,但我不知道如何将其添加到我的标题中。你能举一个例子来说明怎么做吗?谢谢。 – Atasha
哦,是的。我刚刚添加$ this-> output-> set_header(“Cache-Control:no-store,no-cache,must-revalidate”);在admin_controller类中,它的确有窍门。谢谢@FinalFrag – Atasha
请记住,如果它是一个高流量的网站,你可能不想在每个资产上设置无存储标题......标题告诉缓存不要保留你的页面副本。如果将标题添加到所有内容(包括图像),则每个页面请求都会向您的Web服务器发送请求。 – FinalFrag