我正在使用 SWFUpload 和其他一些打印和下载 PDF 的脚本。问题是机器尝试访问页面以生成脚本数据,但它达到了授权要求。我正在为此脚本使用定制的 ip 检查并将它们放入 $this->Auth->allow() 中。
我想允许来自 127.0.0.1 的所有请求。对于自定义脚本,正确的工作流程是什么?我应该允许()所有方法和 checkIP(),还是应该为系统创建一个用户并授权他。我发现最后一个只是为了本地连接!
我正在使用 SWFUpload 和其他一些打印和下载 PDF 的脚本。问题是机器尝试访问页面以生成脚本数据,但它达到了授权要求。我正在为此脚本使用定制的 ip 检查并将它们放入 $this->Auth->allow() 中。
我想允许来自 127.0.0.1 的所有请求。对于自定义脚本,正确的工作流程是什么?我应该允许()所有方法和 checkIP(),还是应该为系统创建一个用户并授权他。我发现最后一个只是为了本地连接!
好的,所以我想出了解决方案,如下所示:
我在核心类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 的同时访问所有方法!