CI框架设置全局登录限制

在CI框架的项目开发过程中,需要对用户登录状态进行验证和跳转,如果每个页面或者每个控制器都写相同的代码,就非常浪费开发效率,并且代码臃肿,相当的麻烦。

下面介绍一种方法,既然可以有全局控制器,那么就在全局控制器中添加登录态的判断,其他继承自该控制器的每个控制器中,自定义是否需要登录状态的判断。具体实现代码如下!

首先打开CI框架根目录->system->core->Controller.php,添加代码(根据注释添加):

public $need_login = false;//添加登录状态属性
/**
* Constructor
*/
public function __construct()
{
self::$instance =& $this;

// Assign all the class objects that were instantiated by the
// bootstrap file (CodeIgniter.php) to local class variables
// so that CI can run as one big super object.
foreach (is_loaded() as $var => $class)
{
$this->$var =& load_class($class);
}

$this->load =& load_class('Loader', 'core');
$this->load->library('session');//开启session
$this->load->initialize();
$this->check_login();//调用判断登录的方法
log_message('debug', "Controller Class Initialized");
}
private function check_login(){//判断登录的方法
if($this->need_login){
$session_data = $this->session->userdata('user');
if(!$session_data){
$url = "/phpthinking";
echo "<script language='javascript' type='text/javascript'>";
echo "window.location.href='$url'";
echo "</script>";
exit;
}
}

}

在其他子控制器中,只要添加如下代码就可实现功能:

 public function __construct()
{
$this->need_login = true;//控制是否需要登录
parent::__construct();
}

 

打赏此文

如果您觉得本站的内容对您有所帮助,您可以扫描下面的二维码小额支付请我喝杯茶,感谢!打赏记录
支付宝
微信
承诺:凡打赏捐助的朋友,留言备注自己的邮箱,在打赏捐助时间点的6个月内,本站会每周邮件推送原创专业技术博文,供大家学习和参考!

留下评论

All fields marked (*) are required