0

我正在使用 SWFUpload 和其他一些打印和下载 PDF 的脚本。问题是机器尝试访问页面以生成脚本数据,但它达到了授权要求。我正在为此脚本使用定制的 ip 检查并将它们放入 $this->Auth->allow() 中。

我想允许来自 127.0.0.1 的所有请求。对于自定义脚本,正确的工作流程是什么?我应该允许()所有方法和 checkIP(),还是应该为系统创建一个用户并授权他。我发现最后一个只是为了本地连接!

4

1 回答 1

1

好的,所以我想出了解决方案,如下所示:

我在核心类Security中写了一个ip检查方法

public static function checkIPBased($userId = false, $ipPool = array()) {
        $permission = FALSE;

        //CHECK BY IP IN IP POOL
        $ipAllowed = array_merge($ipPool, array(
            'localhost',
            '127.0.0.1',
            '::1',
                ));

        foreach ($ipAllowed as $ip):
            if (strpos($_SERVER['REMOTE_ADDR'], $ip) === 0)
                $permission = true;
        endforeach;

        //CHECK IF THE USER IS ACCESING HIS ORDER
        if ($userId && (($userId == AuthComponent::user('id')) || ((int) AuthComponent::user('group_id') === 1)))
            $permission = true;

        return $permission;
    }

之后,我在 beforeFilter() 中的 AppController 中编写了以下代码:

if (Security::checkIPBased())
            $this->Auth->allow();

这样我就允许机器在仍然使用 Auth Component 的同时访问所有方法!

于 2013-06-25T13:15:09.873 回答