Codeigniter 用户权限检查的设计方法

Codeigniter 用户权限检查的设计方法,codeigniter,Codeigniter,我对这个codeigniter是新手。我正在构建一个在用户角色中扮演重要角色的应用程序。在控制器中,我想检查用户是否具有特定的角色或权限,然后授予对函数的访问权限。我想知道我是否可以创建一个流,这样我就不需要检查每个控制器的权限或角色,而扩展时只能这样做。我可以这样做吗 /**更新**/ 如果我想为控制器中的每个方法或仅为控制器中的某些方法设置权限,我该怎么办。您好,我开发了一个系统,遇到了相同的问题……下面是我问题的解决方案 一个存储所有控制器名称(或问题中的模块)的表。 e、 g.mod1

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

/**更新**/


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

您好,我开发了一个系统,遇到了相同的问题……下面是我问题的解决方案

  • 一个存储所有控制器名称(或问题中的模块)的表。 e、 g.mod1 mod2 mod3 . .
  • 一个表,用于存储所有控制器的用户访问权限 e、 g user1 mod1 0 用户1模块2 1 用户1模块3 1 . . 用户2模块1 用户2 mod2 0 用户2模块3 1

  • 在文件(secure_area.php扩展CI_Controller)上创建,该文件检查是否登录(){yes:has_permission(){yes:do things….continue,no:redirect(permission denied)},no:(redirect(login))}

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

  • 在管理区域中,您可以使用简单的复选框来包装授予用户权限的函数或表单

  • 嗨,我开发了一个系统,我遇到了同样的问题…下面是我问题的解决方案

  • 一个存储所有控制器名称(或问题中的模块)的表。 e、 g.mod1 mod2 mod3 . .
  • 一个表,用于存储所有控制器的用户访问权限 e、 g user1 mod1 0 用户1模块2 1 用户1模块3 1 . . 用户2模块1 用户2 mod2 0 用户2模块3 1

  • 在文件(secure_area.php扩展CI_Controller)上创建,该文件检查是否登录(){yes:has_permission(){yes:do things….continue,no:redirect(permission denied)},no:(redirect(login))}

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

  • 在管理区域中,您可以使用简单的复选框来包装授予用户权限的函数或表单
  • 
    
    把你想做的每一件事都放在结构的第一位……

    
    

    把你想做的每件事都放在_construct…

    中,但要检查父类中的权限。但在父类中,我不知道哪个控制器被称为rite?但子类正在扩展父类…也就是说,父类中的代码是子类的一部分..基本上对于用户1..www.example.com/index.php/mod1/function/arg..将他重定向到权限被拒绝的页面..但www.example.com/index.php/mod2/function/arg..将允许他需要访问一次(“secure_area.php”);mod1扩展了安全区域好的,我明白了。但我如何确保在调用函数时首先进行权限检查呢?但我们在父类中检查权限。但在父类中,我不知道哪个控制器被称为rite?但子类正在扩展父类…也就是说,父类中的代码是子类的一部分..基本上对于用户1..www.example.com/index.php/mod1/function/arg..将他重定向到权限被拒绝的页面..但www.example.com/index.php/mod2/function/arg..将允许他需要访问一次(“secure_area.php”);mod1扩展了安全区域好的,我明白了。但我如何确保在调用函数时首先进行权限检查?我们是否需要在会话中检查任何内容?当然,我们需要这样做$此->Employee->is_logged_in()(在'Employee'模型中定义)将在会话中查找用户数据(“某个变量”),并返回'true'或'false'。我们是否需要检查会话中的任何内容?原因是什么$此->Employee->is_logged_in()(在'Employee'模型中定义)将在会话中查找用户数据('some variable'),并返回'true'或'false'。
        <?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);
        }
    }
    ?>