0

Android デバイスから Cakephp バックエンド (Web サービス) にデータを送信するアプリケーションを構築しています。最終的には、独自の認証オブジェクトを作成し、次のようにアクセス トークンを送信しました。

class MyAuthenticate extends BaseAuthenticate {

    public function authenticate(CakeRequest $request, CakeResponse $response) {

        $userCont = $this->_Collection->getController();
        $userCont->loadModel($this->_Collection->getController()->modelClass);

        $response = array();


        if (isset($request['data']['access_token']) AND $userCont->User->find('all', array('recursive' => 0, 'conditions' => array('User.access_token' => $request['data']['access_token'])))) {

            //debug( $userCont->User->find('all',array('recursive'=>0,'conditions'=>array('access_token'=>$request['data']['access_token'])))); 
            //die;
            return $userCont->User->find('all', array('recursive' => 0, 'conditions' => array('access_token' => $request['data']['access_token'])));
        }
        else
            return false;//print_r('NOT FOUND');
     } 

そして、これを認証配列に追加しました

public function beforeFilter() {


    $this->Auth->authenticate = array(
        AuthComponent::ALL => array('userModel' => 'User'),

        'Form',
        'My'


    );

アクセストークンを含むリクエストをログインページに投稿してテストすると、ホームページ(リダイレクトURL)が返されます。

ここで、「追加」投稿などの他のコントローラー アクションにデータを投稿したいと考えています。たとえば、アクセス トークンとリクエスト パラメータを使用して mysite/posts/add にリクエストを送信すると、ポストされず、ACL パーミッション エラー メッセージが返されます。

ログインなどでリダイレクトを作成するか、手動でリダイレクトする必要があると思いますか?この認証オブジェクトを構築する際に、私のロジックは今まで正しいですか?

どうもありがとう。

4

1 に答える 1

0

コントローラーで $this->Auth->allow('..ACTION..') を使用できます。ここで、Cake-handling でリクエストのヘッダーを確認する必要があるため、beforeFilter メソッドでこのチェックを使用して別の WebserviceController を作成することをお勧めします...

于 2013-04-11T18:23:39.637 に答える