笨登录检查的所有功能(标签)(codeigniter login check for all fun

2019-10-18 04:38发布

我有一个登录控件的功能。 如果用户didnt登录重定向到login.php

在我的控制器,我有很多的功能,这功能代表了网页。 所以我一定要叫$this->is_logged_in(); 函数中的每个函数。

例如:

class Admin extends CI_Controller{


        function index(){
            $this->is_logged_in(); // works fine like this
                $this->load->view('admin/welcome_message');
        }

        function users(){
            $this->is_logged_in(); // works fine like this
                $this->load->view('admin/users');
        }

        function comments(){
            $this->is_logged_in(); // works fine like this
                $this->load->view('admin/comments');
        }

}

我不想调用所有功能该功能。 当我把这种在结构的结果是:无限循环。

Answer 1:

在应用程序/核心文件夹,并在其构造函数创建你自己的基本控制器做:

class MY_Controller extends CI_Controller {

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

        // Check that the user is logged in
        if ($this->session->userdata('userid') == null || $this->session->userdata('userid') < 1) {
            // Prevent infinite loop by checking that this isn't the login controller               
            if ($this->router->class != '<Name of Your Login Controller') 
            {                        
                redirect(base_url());
            }
        }   
    }
}

然后所有的控制器只需要继承你的新控制器,然后所有请求都会检查该用户登录。

如果需要通过检查也这可能是更具体的$this->router->method来匹配特定的动作。



Answer 2:

添加该构造函数,你不会有写在每个功能。

 function __construct() {
           parent::__construct();
           if(!$this->is_logged_in()):
                 redirect(base_url()."login.php");
       }


Answer 3:

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

        if(!isset($_SESSION['username'])){
            redirect('login');
        }

}

定义谁是家长和检查函数的结果。 完成



Answer 4:

做这样的事情的最好方法是使用钩子使用会话数据挂钩的笨

这将是所有你应该需要。



文章来源: codeigniter login check for all functions(tabs)