我使用的是CodeIgniter 4。
我有两个控制器:
<?php namespace AppControllers;
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{...}
在这两个控制器中,我有一些表示路由/dashboard
、/profile
、/profile/settings
等的方法。
在每种方法中,我都有相同的预编码if(...){ return redirect()->route("login"); }
。
此先决条件检查用户是否已登录。
如何在控制器的所有方法中都设置此前提条件,而不在Dashboard
和Profile
的每个方法中重写?
function __construct()
{
parent::__construct();
if ( ! $this->session->userdata('logged_in'))
{
redirect('login');
}
}
您可以在__construct()
方法中运行控制器的每个方法中的代码:-
class Auth_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
if ( ! $this->session->userdata('logged_in'))
{
redirect('login');
}
}
}