我正在使用CodeIgniter为我的应用程序构建管理区域,我在库中创建了一个基本管理控制器,名为:MY_Admin_Base,用于扩展CI控制器。如果管理员有权访问该方法,我在那里检查数据库。
class MY_Admin_Base extends Controller {
function __construct()
{
parent::Controller();
//check if the admin has premission to the page
$this->load->model('admin_permissions_model');
$query = $this->admin_permissions_model->get_admin_permission(
array(
'admin_id'=>$this->session->userdata('admin_id'),
'page_id'=>$pages_cat_id)
);
if(!$query)
$this->view->load('admin/restricted_area');
}
}
主类扩展了MY_Admin_Base,并且具有索引方法,类似于:
class Main extends MY_Admin_Base {
function __construct()
{
parent::__construct();
}
function index()
{
$this->view->load('admin/main');
}
}
问题是如果管理员没有访问权限,那么两个视图都会被加载...受限制和主视图。
有人有什么建议吗?答案 0 :(得分:1)
在MY_Admin_Base类中创建一个变量来存储用户是否是管理员:
class MY_Admin_Base extends Controller {
public $is_admin = true;
然后改变
if(!$query)
$this->view->load('admin/restricted_area');
到
if(!$query) {
$this->view->load('admin/restricted_area');
$this->is_admin = false;
}
然后在索引函数中,将代码更改为。
function index() {
if(!$this->is_admin) return;
$this->view->load('admin/main');
}