CodeIgniter自定义库

时间:2011-06-16 04:39:23

标签: codeigniter

我试图创建一个新的lib,每次加载控制器时都会自动加载并验证用户是否已登录

我正在自动加载脚本并且它的加载很好,但它不会接缝进行身份验证

我的自由

class Authentication {

var $CI;
function Authenication() {

    $this->CI =& get_instance();

    $this->CI->load->library('session');
    $is_logged_in = $this->CI->session->userdata('is_logged_in');
    if(!isset($is_logged_in) || $is_logged_in != true)
    {
        echo 'You don\'t have permission to access this page. <a href="../login">Login</a>';    
        die();        
    }
}

}

非常感谢任何建议

1 个答案:

答案 0 :(得分:2)

我看到你想要做什么,我建议采用不同的方法。

创建MY_Controller并将其放在核心文件夹中。以下是该文件中应包含的内容的基本表示。

class Public_Controller extends CI_Controller 
{
    // The data array holds all of the information to be displayed in views
    public $data = array();

    function __construct() 
    {
        parent::__construct();

        // Authentication library handles sessions and authentication, etc...
        $this->load->library('Authentication');

        $this->data['account']['is_logged_in'] = $this->authenication->is_logged_in();
    }
}

class Auth_Controller extends Public_Controller
{   
    function __construct() 
    {
        parent::__construct();

        if ( !$this->data['account']['is_logged_in'] )
        {
            redirect('user/login', 'location');   
        }
    }
}

如果你这样做,那么对于需要身份验证的控制器,你可以扩展Auth_Controller,否则扩展Public_Controller。