如何在CodeIgniter中跨页面使用户对象可用?

jby*_*yrd 1 php authentication controller codeigniter ion-auth

我是CodeIgniter的新手,我正在使用Ion Auth进行用户授权.使用Ion Auth库,您将获得如下用户对象:

  $user = $this->ion_auth->get_user();
  echo $user->email;
Run Code Online (Sandbox Code Playgroud)

如果用户已登录,我希望$ user对象在任何页面上(在任何控制器中)都可用.我怎样才能做到这一点?(我正在使用CodeIgniter 2)

jon*_*ohn 6

我的博文详细介绍了使用Ion_Auth,让您的整个应用程序(包括视图)访问您当前用户的信息.

简短版本......(特别针对手头的话题)

将其添加到您的MY_Controller.php文件中

class User_Controller extends CI_Controller {

    protected $the_user;

    public function __construct() {

        parent::__construct();

        if($this->ion_auth->logged_in()) {
            $data->the_user = $this->ion_auth->get_user();
            $this->the_user = $data->the_user;
            $this->load->vars($data);
        }
        else {
            redirect('/');
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在您的应用程序中创建您的控制器就像这样

class App_Controller extends User_Controller {

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

    function index() {
        //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

然后不仅在您的控制器中您将有权访问,$this->the_user但您也将$the_user加载到每个视图中$this->load->vars()