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

时间:2016-02-23 13:37:32

标签: codeigniter

我必须检查每个控制器中的会话。如果用户已注销,则重定向到登录页面。我怎么能在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

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

当我退出并按下浏览器后退按钮时,它再次将我带到登录部分。似乎会话没有被正确销毁。

2 个答案:

答案 0 :(得分:0)

  1. 创建AppController在application / core /
  2. 中扩展CI_Controller
  3. 在config" my_class_prefix"中设置(?)=' App'
  4. 从AppController
  5. 扩展所有应用程序控制器(关闭以进行公共访问)
  6. 在AppController chech session的__construct()中

答案 1 :(得分:0)

您可以通过为此设置功能来检查... 检查会话是否未设置然后只有登录时重定向...否则重定向usr在home / dashboard ...

function check_user_login()
{
    if(! $this->session->userdata('logged_in'))
    {
        redirect('login');
    }

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