【问题标题】:How to allow local scripts to run, with Auth enabled?如何在启用身份验证的情况下允许本地脚本运行?
【发布时间】:2013-06-25 11:41:51
【问题描述】:

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

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

【问题讨论】:

  • 隐藏方法的方法有很多,放在allow()中,但我想要一个正确的形式,使用蛋糕的授权。
  • 允许 url 在没有 Auth 的情况下访问。然后它会工作
  • 您使用的是哪个 PDF 组件?提供插件名称..以便我们可以帮助您..
  • 我正在使用我自己的文件组件。我知道我可以允许在没有 Auth 的情况下访问 url,但我不想这样做。由于一些脚本访问敏感数据,SWF 将文件上传到服务器上。我希望所有 Auth 限制都适用,但不适用于 127.0.0.1。我正在考虑在核心中编写此检查,但它足够安全吗?简单的 IP 检查?
  • 然后写一个ip检查..

标签: cakephp cakephp-2.0


【解决方案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;
    }

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

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

这样我允许机器访问所有方法同时仍然使用 Auth 组件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多