Codeigniter:限制访问的最佳方式

时间:2014-01-30 09:25:52

标签: php codeigniter

好的,现在我正在使用Codeigniter开发我的应用程序(开始喜欢它:))

我的整个系统仅供登录用户使用,一旦系统将进入登录页面。

现在我开始限制不同用户组的访问权限。所以我最大的问题是哪种方法可以很好地执行登录检查?

  • 检查每个控制器方法?
  • 可以直接写入header.php视图文件并在需要时执行检查和重定向吗?

由于管理员和前端都将仅限于访问权限,因此基于用户角色,访客无法访问任何内容。

修改

非常抱歉,我忘了提到我正在使用Ion Auth库进行身份验证。另外,我写了一些基于ion auth的助手,让生活更轻松。

2 个答案:

答案 0 :(得分:3)

您可以在核心目录中创建名为MY_Controller.php的扩展核心控制器,但前缀必须与config.php中配置的前缀匹配。

MY_Controller中,您可以创建一个名为is_logged_in的函数,该函数检查登录会话(如果它是基于会话的)是否存在且是否有效。

在每个需要有效登录会话的控制器中,在构造方法中,您只需说if(!$this->is_logged_in()) { redirect('/login'); }

我更喜欢这样的方法而不是在每个单独的控制器中进行会话检查的原因是,如果您登录的会话索引的名称发生变化,您只需在一个中心修改登录的检查的地方。

答案 1 :(得分:0)

如果您在header.php中执行此操作,则必须使用多个header.php来进行检查。我这样做的方法是使用codeigniter内置的session库,然后使用:

if($this->session->userdata('logged_in'){
    $this->model_name->function();
    $this->load->view("header");
}else{
    redirect("login", "refresh");
}

您可以这样做:

$array = array(
    'logged_in'           => true,
    'admin'               => true,
    'some_other_thing'    => false
);

$this->session->set_userdata('admin'. $array);