CodeIgniter4 - 来自控制器的所有方法的前提条件

CodeIgniter4 - pre-condition for all methods from controller

我正在使用 CodeIgniter 4。

我有 2 个控制器:

<?php namespace App\Controllers;

class Dashboard extends BaseController{

    public function index(){
        
        //pre-condition - logged
        if(!$this->session->has("email")){

            //go to login
            return redirect()->route("login");

        }

        return view("dashboard");

    }

}

//---------------------

class Profile extends BaseController{...}

在这 2 个控制器中,我有一些方法表示路由 /dashboard/profile/profile/settings

在每种方法中我都有相同的预编码if(...){ return redirect()->route("login"); }

此先决条件检查用户是否已登录。

如何将此先决条件设置为来自控制器的所有方法,而不重写来自 DashboardProfile 的每个方法?

您可以 运行 通过 运行 在 __construct() 方法中对控制器的每个方法进行编码:-

class Auth_Controller extends CI_Controller {
    function __construct()
    {
         parent::__construct();
    if ( ! $this->session->userdata('logged_in'))
    { 
        redirect('login');
    }
    }
}
function __construct()
{
    parent::__construct();
    if ( ! $this->session->userdata('logged_in'))
    { 
        redirect('login');
    }
}