设计用户权限检查的方法

时间:2012-08-29 08:32:18

标签: codeigniter

我是这个codeigniter的新手。我正在构建一个用户角色扮演重要角色的应用程序。在控制器中,我想检查用户是否具有特定角色或权限,然后授予对功能的访问权限。我想知道我是否可以创建一个流程,这样我就不需要检查每个控制器的权限或角色,只有扩展时才可以完成。我可以这样做吗?

/ **更新** /

如果我想为控制器中的每个方法设置权限,或者只为控制器中的某些方法设置权限,该怎么办呢。

2 个答案:

答案 0 :(得分:4)

    <?php
class Secure_area extends CI_Controller 
{

    function __construct($module_id=null)
    {
        parent::__construct();  
        $this->load->model('Employee');
        if(!$this->Employee->is_logged_in())
        {
            redirect('login');
        }

        if(!$this->Employee->has_permission($module_id,$this->Employee->get_logged_in_employee_info()->person_id))
        {
            redirect('no_access/'.$module_id);
        }

        //load up global data
        $logged_in_employee_info=$this->Employee->get_logged_in_employee_info();
        $data['allowed_modules']=$this->Module->get_allowed_modules($logged_in_employee_info->person_id);
        $data['user_info']=$logged_in_employee_info;
        $this->load->vars($data);
    }
}
?>

首先在__construct ....

中放置你想要做的每件事

答案 1 :(得分:0)

您好我开发了一个系统,我面临同样的问题......以下是我的问题的解决方案

  1. 一个存储所有控制器名称(或我的问题中的模块)的表。  例如MOD1       MOD2       MOD3        。        。
  2. 一个存储所有控制器的用户访问权限的表 例如user1 mod1 0      user1 mod2 1      user1 mod3 1        。        。      user2 mod1 1      user2 mod2 0      user2 mod3 1

  3. 在文件(secure_area.php EXTENDS CI_Controller)上创建,检查is_logged_in(){是:has_permission(){是:做事......继续,否:重定向(权限被拒绝)},否:(重定向(登录))}

  4. 我的所有控制器都扩展了secure_area.php。

  5. 在管理区域中,您可以创建功能或表单,仅使用复选框向用户授予权限。