如何在Codeigniter中实现安全登录/注销?

时间:2011-09-27 05:38:08

标签: codeigniter login

我正在为使用CI创建的系统进行安全登录,因为应该有系统的管理控制。

我的方法是我在名为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作为类的父级,这样用户就无法直接访问这些页面。

现在,我的问题是,当我点击注销时,会话将被销毁并且用户的数据被清空,因此用户必须被重定向到登录页面,但它不会那样,因为每当我点击在我点击退出后,浏览器的后退按钮,用户所在的上一页仍会显示,但当我点击这些页面上的链接时,就是用户被重定向到登录页面的时间。我想要的是,点击退出后如果他/她尝试并点击浏览器的后退按钮,他/她必须被重定向到登录页面。

有谁知道我的问题的解决方案?任何帮助表示赞赏。提前谢谢。

2 个答案:

答案 0 :(得分:0)

尝试这样做:

redirect(site_url('login'), 'refresh');

答案 1 :(得分:0)

尝试将以下HTTP标头添加到您的网页:

Cache-Control   no-cache, no-store, must-revalidate

这将强制您的浏览器重新下载页面(=重新执行您应该检查is_logged_in变量并重定向到登录页面的控制器)