我正在尝试在 CodeIgniter 中设置一个“post_controller_constructor”挂钩。目的是检查用户是否未登录,然后将他重定向回登录页面。
这是我的钩子配置数组:
$hook['post_controller_constructor']  = array(
   'class'     => 'Checkpoint',
   'function'  => 'check_status',
   'filename'  => 'checkpoint.php',
   'filepath'  => 'controllers'
);
这是 Hook 事件的类
class Checkpoint {
var $CI;
function __construct(){
    $this->CI =& get_instance();
}
function check_status() {
    if($this->CI->router->class == 'Login'){
        return;
    } 
    if (!isset($this->CI->session)){
        $this->CI->load->library('session');
    } 
    if(!$this->CI->session->userdata('log_status')){
        //redirect(site_url('login'));
        echo "not logged in";
    }
    else{
        echo "logged in";
    }
}}
现在这里有问题:
当它收到来自“登录”控制器的请求时,它不会从 check_status() 函数中的第一个 if 语句返回,并在加载视图之前打印“未登录”。
如果未设置会话用户数据,当我尝试重定向时,它会在我的浏览器中显示错误“此网页具有重定向循环”。出于这个原因,我已经注释掉了重定向语句
我能做些什么来解决这些问题?