【问题标题】:how to manage multi-user permission in codeigniter如何在codeigniter中管理多用户权限
【发布时间】:2018-09-05 21:39:14
【问题描述】:

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

【问题讨论】:

  • 在 ci 中使用 Hooks 将解决您的问题

标签: php codeigniter user-permissions


【解决方案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 {

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 2014-04-12
    • 1970-01-01
    • 2017-08-20
    • 2021-05-12
    • 1970-01-01
    • 2012-02-07
    相关资源
    最近更新 更多