Codeigniter登录控制器

时间:2010-11-24 05:59:05

标签: php codeigniter

喂!我是Codeigniter的新手,我正在努力保护整个管理员。我想我会从这里开始:

function Admin()
{
    parent::Controller();
    if(!isset($_SESSION['loggedin'])){
        $this->login();
    }
}

但这显然是不完整的。我如何也停止尝试运行的方法(即index()),我是否在正确的轨道上?

感谢您的帮助!!

2 个答案:

答案 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)

将检查会话代码放在您要保护的管理控制器中的每个功能中。 这是最简单的方法..