0

x でカスタム ログイン コンポーネントを実装しようとすると、「認証アダプタ "xmlRpc" が見つかりませんでした」というエラーが表示されます。

私のAppController.phpには次のものがあります

<?php

App::uses('Controller', 'Controller');

//Custom Auth
App::uses('xmlRpc', 'Controller/Component/Auth');

class AppController extends Controller {

    //Authentication component

    public $components = array(
        'Session',
        'DebugKit.Toolbar',
        'Auth' => array(
            'authenticate' => array(
                    'xmlRpc'
                )           
            )
        );

}

次に、ログインコンポーネントを /Controller/Component/Auth/xmlRpc.php に配置します

<?php

App::uses('BaseAuthenticate', 'Controller/Component/Auth');

class xmlRpc extends BaseAuthenticate {

    public function authenticate(CakeRequest $request, CakeResponse $response) {
        return true;
    }
}
?>

ユーザーコントローラーには次のものがあります。

<?php
App::uses('AppController', 'Controller');

//Custom Auth
App::uses('xmlRpc', 'Controller/Component/Auth');

class UsersController extends AppController {

    public function logout() {
        return $this->redirect($this->Auth->logout());
    }   

    public function login() {

        if ($this->request->is('post')) {

            if ($this->Auth->login()) {

                return $this->redirect($this->Auth->redirectUrl());
                // Prior to 2.3 use `return $this->redirect($this->Auth->redirect());`

            } else {

                $this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
            }
        }
    }

}
?>

ところで、私の認証機能では、テストのためだけに常に true を返します。このエラーが解消されたら、ロジックを追加します。私は Cake n00b なので、私を助けて気楽にしてください。Cake にカスタム認証アダプターを表示させるにはどうすればよいですか?

4

3 に答える 3

1

CakePHP の命名規則に従います。クラスにはXmlRpcAuthenticate、ファイルにも (.phpもちろん拡張子を付けて) という名前を付ける必要があります。App::uses()呼び出しと構成では、名前を使用せずにAuthenticate、つまりXmlRpc.

// This App::uses()  call is actually not necessary in the controller unless
// your are actually trying to access the class directly
App::uses('XmlRpc', 'Controller/Component/Auth');

...

public $components = array(
    ...

    'Auth' => array(
        'authenticate' => array(
             'XmlRpc'
        )           
    )
);

http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#creating-custom-authentication-objectsも参照してください

于 2013-10-08T13:28:21.350 に答える
0

関数の最初の文字を大文字にするだけで、私もこの方法で解決しました..ありがとう

于 2014-11-05T07:07:28.053 に答える