Codeigniter 3 MY_Controller

时间:2017-01-23 01:48:18

标签: php codeigniter authentication

我的MY_Controller位于我的核心文件夹中。

<?php
class MY_Controller extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
    }

    public function is_logged_in($data){    
        $session = $this->session->userdata();
        if($session['isloggedin']['username'] == ''){ 
        return isset($session); 
        }else{ 
        return FALSE;}  
    }
}
?>

我非常确定我会从上面的代码中复制粘贴上面的代码,而且我还没有根据自己的需要进行编辑。

任何情况我都有疑问。

所以我有一个页面控制器,负责根据登录用户的account_type访问某些视图。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class pages extends MY_Controller {


}?>

这是用户登录时的会话。

    $new_session = array( 'username' => $this->input->post('username'),
                          'email' => $this->input->post('email'),
                          'type' => $this->input->post('type'),
                          'logged_in' => TRUE);
    $this->session->set_userdata($new_session);

如何从页面控制器中调用MY_controller函数is_logged_in(),或者是扩展MY_Controller&#39;自动也调用函数is_logged_in()或者我必须基本上把它放在__construct中,以便它自动调用函数?

另外,我如何检查用户是否已登录并查看其详细信息?

我是否将session_data从我的控制器传递给MY_Controller?如果是这样,怎么样?

或者我应该在$this->session->userdata();函数中添加is_logged_in()行吗?

P.S。我尝试使用身份验证库,但它们包含的内容远远超出我的需要,我只需要一个基本的身份验证。有什么建议?现在仍然保持着。

1 个答案:

答案 0 :(得分:2)

您可以直接从您的页面控制器调用is_logged_in()函数。就像这样:

<强> Pages.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Pages extends MY_Controller {
    function __construct() {
       parent::__construct(); // this will trigger the __construct() of MY_Controller 
    }

}

<强> MY_Controller.php

<?php
class MY_Controller extends CI_Controller{
    public function __construct() {
      parent::__construct();
      if( $this->is_logged_in() ) {
         // do something if user is allowed to access.
      }
      else {
        // do something if user is not allowed to access
      }

    }
}