喂!我是Codeigniter的新手,我正在努力保护整个管理员。我想我会从这里开始:
function Admin()
{
parent::Controller();
if(!isset($_SESSION['loggedin'])){
$this->login();
}
}
但这显然是不完整的。我如何也停止尝试运行的方法(即index()),我是否在正确的轨道上?
感谢您的帮助!!
答案 0 :(得分:1)
有
扩展基本控制器: 的 MY_Controller.php 强>
<?php
class MY_Controller extends Controller {
function __construct()
{
parent::Controller();
$user_id = $this->session->userdata('user_id');
$this->data['user'] = $this->user_lib->get($user_id);
}
}
?>
您可以在此构造中存储各种信息。这只是获取当前登录的用户ID并为其分配$data['user']
。这将根据您使用的auth库类型进行调整,但您可以获得要点。您现在可以从任何扩展“MY_Controller”的控制器中访问当前用户ID及其所有详细信息
现在您可以创建一个“管理员”控制器,或任何其他数量的控制器来限制访问。像这样: 的 Admin_Controller.php 强>
<?php
class Admin_Controller extends MY_Controller {
function __construct()
{
parent::Controller();
if($this->data['user']['group'] !== 'admin')
{
show_error('Error - you need to be an admin.');
}
}
}
?>
<强> Public_controller.php 强>
<?php
class Public_Controller extends MY_Controller {
function __construct()
{
parent::Controller();
if($this->data['user']['group'] !== 'member')
{
show_error('You need to login to see this page...');
}
}
}
?>
你可以看到..可能性是无穷无尽的
因此,对于仅限管理员的页面 - 使用管理员控制器 仅限会员页面 - 公共 对于“普通”页面 - 使用默认控制器。
我会链接到Phil Sturgeon's文章,因为它是我首先阅读的文章
答案 1 :(得分:0)
将检查会话代码放在您要保护的管理控制器中的每个功能中。 这是最简单的方法..