我有一组控制器,只有你是管理员(而不是普通用户)才能访问。
因此,在每个控制器的构造函数中,我会这样做:
public function __construct() {
parent::__construct();
if (! is_admin()) {
show_404();
}
}
有没有更好的方法来执行此操作,而不是将此代码添加到每个管理控制器的构造函数中?
我在想我可以创建一个名为Admin_Controller
的基本控制器,它看起来像这样:
public class Admin_Controller extends CI_Controller {
public function __construct() {
//the above code goes here
}
}
然后我所有其他控制器都可以扩展这个类,而不是CI_Controller
类。唯一的问题是,我需要将此文件包含在其他控制器的顶部,否则CodeIgniter找不到Admin_Controller
。
有更好的方法吗?
答案 0 :(得分:4)
将它放在你的应用程序/核心文件夹中:MY_Controller.php (注意正确使用大写字母)
class MY_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();
if (! is_admin())
{
show_404();
}
}
然后在您希望用户登录的所有普通控制器中
class Whatever extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
}
答案 1 :(得分:2)
我认为您可以使用Hooks 我做了同样的事情,但我需要更精确的控制,所以我必须检查每个控制器。并非所有控制器都禁止单个用户使用。