Cakephp 3.x和接受第三方xml数据

Cakephp 3.x和接受第三方xml数据,php,xml,cakephp-3.0,Php,Xml,Cakephp 3.0,我们的客户正在向第三方发送文档,并将其存储。一旦第三方收到文档,他们就会将xml数据发送到我们提供给他们的url(例如)。我们的第三方要求我们向他们发回回复,说我们收到了他们的请求。我们创建了一个供应商库,并将其自动加载到我们的应用程序中。出于某种原因,当我们伪造来自第三方的请求时,我们会被重定向回登录页面,就好像什么也没发生一样。这是我们的控制器 class DocumentsController extends AppController { public function bef

我们的客户正在向第三方发送文档,并将其存储。一旦第三方收到文档,他们就会将xml数据发送到我们提供给他们的url(例如)。我们的第三方要求我们向他们发回回复,说我们收到了他们的请求。我们创建了一个供应商库,并将其自动加载到我们的应用程序中。出于某种原因,当我们伪造来自第三方的请求时,我们会被重定向回登录页面,就好像什么也没发生一样。这是我们的控制器

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']);
}