在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"));
}
}
}
答案 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 {
}