Cakephp 3.x和接受第三方xml数据
我们的客户正在向第三方发送文档,并将其存储。一旦第三方收到文档,他们就会将xml数据发送到我们提供给他们的url(例如)。我们的第三方要求我们向他们发回回复,说我们收到了他们的请求。我们创建了一个供应商库,并将其自动加载到我们的应用程序中。出于某种原因,当我们伪造来自第三方的请求时,我们会被重定向回登录页面,就好像什么也没发生一样。这是我们的控制器Cakephp 3.x和接受第三方xml数据,php,xml,cakephp-3.0,Php,Xml,Cakephp 3.0,我们的客户正在向第三方发送文档,并将其存储。一旦第三方收到文档,他们就会将xml数据发送到我们提供给他们的url(例如)。我们的第三方要求我们向他们发回回复,说我们收到了他们的请求。我们创建了一个供应商库,并将其自动加载到我们的应用程序中。出于某种原因,当我们伪造来自第三方的请求时,我们会被重定向回登录页面,就好像什么也没发生一样。这是我们的控制器 class DocumentsController extends AppController { public function bef
class DocumentsController extends AppController {
public function beforeFilter(Event $event) {
parent::beforeFilter($event);
$this->Security->config('unlockedActions', ['receive']);
$this->Auth->allowedActions = (['receive']);
}
public function receive()
{
$this->request->allowMethod(['post']);
$this->autoRender = false;
$doc = new \Document\Document(false);
$doc->set_user_name("username");
$doc->set_user_password("password");
$xml = $this->request->data['xml'];
try {
if($doc->parse_inbound_message($xml)) {
$parsed = $doc->getContent();
$file = new File('files/playground/test_file.xml', true, 0644);
$file->open();
//$file->write(print_r($parsed, true));
$file->write('Hey, I parsed!');
$file->close();
} else {
$file = new File('files/playground/test_file.xml', true, 0644);
$file->open();
$file->write('we got a false');
$file->close();
}
} catch(\Document\DocumentException $e){
$file = new File('files/playground/test_file.xml', true, 0644);
$file->open();
$file->write($e->getMessage());
$file->close();
}
}
}
这本食谱似乎有问题。试试这个:
public function beforeFilter(Event $event) {
parent::beforeFilter($event);
$this->Auth->allow(['receive']);
}