如何在启用Auth的情况下允许本地脚本运行?

时间:2013-06-25 11:41:52

标签: cakephp cakephp-2.0

我正在使用SWFUpload和其他一些打印和下载PDF的脚本。 问题是机器试图访问页面以生成脚本的数据,但它符合授权要求。 我正在使用自定义的ip检查这个脚本并将它们放入$ this-> Auth-> allow()。

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

1 个答案:

答案 0 :(得分:1)

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

我在核心类安全

中写了一个ip check方法
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;
    }

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

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

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