【问题标题】:Create Permission Without Checking URI Segment on Codeigniter在 Codeigniter 上创建权限而不检查 URI 段
【发布时间】:2018-12-14 08:56:18
【问题描述】:

我的简单库中有一个函数,并在一些控制器上调用了

$activeUrl = str_replace(base_url(),"",current_url());
erporate_acl::has_permission($activeUrl);

然后这是我的库代码,这里的代码尝试匹配数据库中的当前 URI ($param) 数据:

public static function has_permission($param){
    $CI =& get_instance();
    $CI->load->model('acl_model');
    $user        = $CI->session->userdata('user');
    $arrPerms    = $CI->acl_model->permissions($user);
    $currentMeth = strtolower(str_replace("::", "/", $param));

    $result = "";
    if (!empty($arrPerms)) 
    {
        if (strpos($currentMeth,'edit') !== false || strpos($currentMeth,'view') !== false || strpos($currentMeth,'delete') !== false) {
            $str = preg_replace('#\/[^/]*$#', '', $currentMeth);
            $result = in_array($str, $arrPerms);
        }else{
            $result = in_array($currentMeth, $arrPerms);
        }

    }else{
        $result = false;
    }

    if ($result == false) {
        show_error("<font size='+1'>Sorry, You Don't Allowed to Access !</font><br><a href='".@$_SERVER['HTTP_REFERER']."'>Back to Previous Page</a>");
    }
}

我上面脚本的要点是匹配in_array if in_array return false 然后我们得到错误消息,否则允许访问页面

是否可以在不检查 URI 段的情况下创建权限?

谢谢你,对不起我的英语不好

【问题讨论】:

  • 你到底想在这里实现什么?说清楚

标签: php mysql codeigniter permissions


【解决方案1】:

您可以使用以下内容:

$this-&gt;router-&gt;class 获取正在使用的控制器类;

$this-&gt;router-&gt;method获取被调用的方法;

$this-&gt;router-&gt;directory 获取目录,以防您的 url 中有子文件夹被使用。

这样您就不需要检查正在使用的网址。您可以检查控制器和方法。

这是一种与路线无关的方式。如果您有类似的情况:

  • users/get/1
  • 用户/marco-monteiro

在这些情况下,基于 uri 段的 ACL 可能会很困难。使用我提到的方法会变得更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    相关资源
    最近更新 更多