避免在代码点火器 3 控制器中重复会话和访问权限检查


Avoid repeating session and access right checks in codeigniter 3 controller

我在助手的帮助下使用我的 codeigniter 3 应用程序中的会话实现了一个简单的角色检查代码。

访问助手:定义一个名为 access_right 的函数,该函数检查登录用户是否具有访问特定模块的访问权限,并相应地返回 true 或 false。

除此之外,我还有两个版本的导航栏,一个用于管理员用户,一个用于非管理员用户。

在控制器中,我添加了以下代码来执行检查,即要加载的导航以及登录用户是否有权访问模块:

if($this->session->userdata('user-type') === 'admin')
    {
        $this->load->view('templates/sub_header_admin');
    }
    else 
    {
        $this->load->view('templates/sub_header');
    }
    if(access_right('client_information'))
    {
        $this->load->view('pages/clientview/client_page');
    }
    else 
    {
        $this->load->view('templates/restricted_access');
    }
    $this->load->view('templates/footer');

问题是我需要在控制器中的每个方法中重复这么多代码。

access_right('client_information') ,当然,我根据加载的控制器检查不同的值,例如"operator_information",而不是client_information。

如何避免这种代码重复?

就像您避免重复代码来检查"client_information"访问权限一样 - 创建一个函数来执行此操作。