使用codeigniter中的挂钩检查会话?

使用codeigniter中的挂钩检查会话?,codeigniter,Codeigniter,我必须检查每个控制器中的会话。若用户已注销,则重定向至登录页面。我如何使用codeigniter中的钩子来实现它,这样我就不必在每个控制器中编写会话条件。帮帮我 我在application/hooks/Authenticate.php function __construct() { $this->CI =& get_instance(); } function loginCheck() { if($this->session->userdata('

我必须检查每个控制器中的会话。若用户已注销,则重定向至登录页面。我如何使用codeigniter中的钩子来实现它,这样我就不必在每个控制器中编写会话条件。帮帮我

我在
application/hooks/Authenticate.php
function __construct()
{
    $this->CI =& get_instance();
}


function loginCheck()
{
    if($this->session->userdata('role_id')=='' && $this->session->userdata('user_id')=='' && $this->session->userdata('client_id')==''){ 
    redirect('login');
    }

}
下面是
application/config/hooks.php中的代码

function __construct()
{
    $this->CI =& get_instance();
}


function loginCheck()
{
    if($this->session->userdata('role_id')=='' && $this->session->userdata('user_id')=='' && $this->session->userdata('client_id')==''){ 
    redirect('login');
    }

}
$hook['pre_controller'][] = array(
'class' => 'Authenticate',
'function' => 'loginCheck',
'filename' => 'authenticate.php',
'filepath' => 'hooks/authenticate',
'params' => array()
);

当我注销并按下浏览器返回按钮时,它再次将我带到登录部分。会话似乎没有被正确地破坏

  • 在应用程序/核心中创建AppController扩展CI_控制器/
  • 在配置中设置“my_class_prefix”(?)=“应用程序”
  • 从AppController扩展所有应用程序控制器(关闭以供公共访问)
  • AppController检查会话的In _construct()

  • 你可以通过做一个函数来检查。。。 检查会话是否未设置,并且仅在登录时重定向…否则在主页/仪表板上重定向usr

    function check_user_login()
    {
        if(! $this->session->userdata('logged_in'))
        {
            redirect('login');
        }
    
        if($this->session->userdata('user_active') == false)
        {
            redirect('your page name');
        }
    }
    

    你现在有什么代码?你试过什么?什么不起作用了?谢谢你的帮助。但是,我不想对核心文件做任何修改。我们不能使用钩子吗?“当我注销并按browser back按钮时,它会再次将我带到登录部分。”按F5?此时唯一的问题是,如果我们升级框架版本会怎么样?核心文件夹内控制器中的此自定义是否有效?您只需要从旧版本复制控制器、模型和视图文件夹。CI 3.0中的配置文件有更改。将旧配置数据集成到新配置文件中。