2

cURL ライブラリを使用して、別のサービスが json POST データを送信できる URL の場所を作成しようとしています。私は400のApacheエラーを受け取り、取得しています:

**Security Error**
The requested address was not found on this server.

 Request blackholed due to "auth" violation.

CakePHP アプリでは、セキュリティ コンポーネントを無効にし、ルーターに正しいルートを設定しようとしましたが、役に立たないようです。

これが私のコントローラーアクション、私のモデル beforeFind とルートです:

public function hello() {
    $data = $this->request->data;
    CakeLog::write('helloSignResponse', $data);
    if ($data) {
        $this->Security->validatePost = false;
        CakeLog::write('helloSignResponse', $data);
        if ($this->request->data['signature_request']['is_complete'] == true) {
            $signature = $this->request->data['signature_request']["signature_request_id"];
            $agent = $this->Agent->findBySignature('first', array('conditions' => $data['id'], 'feilds' => array('id')));
            $this->Agent->id = $agent['Agent']['id'];
            $this->User->id = $data['Agent']['user_id'];
            if (!( $this->Agent->saveFeild('status', 1) && $this->User->saveFeild('status', 1))) {
                CakeLog::write('helloSign', 'Did Not update the user status and agent status');
            }
        }
        return 'Hello API Event Received.';
    }
}

//Model

public function beforeFilter() {
    $this->Security->unlockedActions = array('hello');
    if ($this->action == 'hello') {
        $this->Security->csrfCheck = false;
        $this->Security->validatePost = false;
    }
}

//route
 Router::connect('/hello', array('plugin' => 'PhoneKarma', 'controller' => 'Agents', 'action' => 'hello'));

これを防ぐため、または別のサーバーからの POST データを受け入れるために、CakePHP で他に何をすべきでしょうか?

4

1 に答える 1

1

これらの関数が機能するためには、モデルではなく、beforeFilter がコントローラー内にある必要があることがわかりました。これが作業中の beforeFilter です。

public function beforeFilter() {
    $this->Security->unlockedActions = array('hello');
    $this->Auth->allow('hello');
    parent::beforeFilter();
}
于 2013-06-12T19:26:10.607 に答える