如何在codeigniter中管理多用户权限

时间:2018-03-27 12:59:22

标签: php codeigniter user-permissions

在codeIgniter框架中管理多用户权限和权限的最佳方法是什么?

我试图管理它并且运行良好。但我必须在每个控制器中调用一个函数。那是我不想要的。下面的函数通过会话变量获取控制器名称和数据。

function allow_user_permission(){
    $ci = & get_instance();
    $arr = $ci->session->userdata("userdata")['persissions'];
    $array = json_decode($arr);

    $controller = $ci->router->fetch_class();
    $per = (object) array("label"=>$controller,"val"=>true);
    $permission = array($per);

    if(isset($array)){
      $res = in_array($permission, $array, true);

        if ($res ==FALSE)
            {
             redirect(site_url("dashboard"));
            }
    }
}

1 个答案:

答案 0 :(得分:1)

您只需要创建一个父控制器,然后让控制器继承它。每次访问任何控制器时都会实例化父控制器。它的构造函数运行安全检查。

1-创建文件application / core / MY_Controller.php(PS:我简化了你的代码)

<?php
class Parent_controller extends CI_Controller{
    public function __construct()
    {
        parent::__construct();
        $this->allow_user_permission();
    }

    public function allow_user_permission()
    {
        $arr = json_decode($this->session->userdata['persissions']);
        $permission = array("label" = >$this->router->fetch_class(), "val" => true);
        if (!empty($array) && !in_array($permission, $array, true))
             redirect(site_url("dashboard"));
    }
}

2-在您的控制器中,您只需要更新控制器继承的类并使用Parent_controller。例如:

class Users extends Parent_controller {

}