【问题标题】:Block access to functions in Code Igniter阻止对 Codeigniter 中函数的访问
【发布时间】:2015-07-06 09:56:38
【问题描述】:

我正在使用 Code Igniter 开发一个应用程序,但出现了一个问题:

我有几个访问数据库的函数,它们的路由如下:

控制器/函数/变量 雇员/删除雇员/4

因此,任何将其放在 url 上的人都会删除该员工。

我怎样才能设法只允许登录的管理员用户访问此功能? 有没有简单且被广泛接受的方法? 我必须每次检查是否有用户登录并且该用户有权限?

问候,

【问题讨论】:

标签: php codeigniter permissions


【解决方案1】:

这里是参考网址...

https://ellislab.com/codeigniter/user-guide/general/hooks.html

这是一个简单的例子

Copy this piece of code as checksession.php and save it in /application/hooks
    <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

        class Checksession
        {
            private $CI;

            public function __construct()
            {
                $this->CI =&get_instance();
            }

            public function index()
            {
                if($this->CI->router->fetch_class() != "login"){
                    // session check logic here...change this accordingly
                    if($this->CI->session->userdata['userid'] == '' ){
                        redirect('login');
                    }
                }

            }
        }

将此代码复制到 /application/config/hooks.php 中

$hook['post_controller_constructor'] = array(
                                'class' => 'checksession',
                                'function' => 'index',
                                'filename' => 'checksession.php',
                                'filepath' => 'hooks'
);

在 /application/config/config.php 中启用钩子

$config['enable_hooks'] = TRUE;

希望这会有所帮助。
祝你好运,编码愉快

【讨论】:

  • 感谢您的帮助,但这仅解决了我的问题的一半。我的应用程序中有 3 种类型(角色)的用户:管理员、经理和员工。 - 管理员可以做任何事情 - 经理可以做很多事情 - 员工受到很大限制。所以我必须根据会话中的角色设置每个Constructor的权限。但我认为我可以从这里开始,在每个方法中创建一个数组,指定允许的角色,然后他们检查你发布的这个钩子。正确的?提前谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
相关资源
最近更新 更多