我正在尝试在 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 语句返回,并在加载视图之前打印“未登录”。
如果未设置会话用户数据,当我尝试重定向时,它会在我的浏览器中显示错误“此网页具有重定向循环”。出于这个原因,我已经注释掉了重定向语句
我能做些什么来解决这些问题?