0

認証コアライブラリのドキュメントを読みましたが、その使用方法が明確ではありません。事前の知識がたくさんあることを前提としているようです。

具体的には:

$ this->Auth->authenticateを使用して認証ハンドラーを構成します。認証用に1つまたは複数のハンドラーを構成できます。複数のハンドラーを使用すると、ユーザーをログインさせるさまざまな方法をサポートできます。ユーザーをログインさせると、認証ハンドラーは宣言された順序でチェックされます。1つのハンドラーがユーザーを識別できるようになると、他のハンドラーはチェックされません。逆に、例外をスローすることですべての認証を停止できます。スローされた例外をキャッチし、必要に応じて処理する必要があります。

認証ハンドラーは、コントローラーのbeforeFilterまたは$components配列で構成できます。配列を使用して、構成情報を各認証オブジェクトに渡すことができます。

だから私の中で私PeopleControllerはサンプルコードで書いた:

<?php
class PeopleController extends AppController {
    public $helpers = array('Html', 'Form');

    $this->Auth->authenticate = array(
        AuthComponent::ALL => array('userModel' => 'Member'),
        'Form',
        'Basic'
    );

    public function index() {

    }
}

そして、この例外が発生します。

構文エラー、予期しない'$ this'(T_VARIABLE)、関数(T_FUNCTION)が必要ですエラー:内部エラーが発生しました。

スタックトレースCORE\Cake \ Error \ErrorHandler.php162行目→ErrorHandler::handleFatalError(integer、string、string、integer)[内部関数]→ErrorHandler :: handleError(integer、string、string、integer、array)CORE \ Cake \ Core \ App.php行926→call_user_func(文字列、整数、文字列、文字列、整数、配列)CORE \ Cake \ Core\App.php行899→App::_ checkFatalError()[内部関数]→App :: shutdown ()

認証されたユーザーだけがコントローラーにアクセスできるようにコントローラーを保護する方法の簡単な例を誰かが提供できますか?個々のアクション機能も保護できますか?

4

2 に答える 2

0

クラス定義にある間は、インスタンス参照を持つことはできません。

$thisクラスメソッドでのみアクセスできます。

コントローラー(たとえば、AppController.php):

    public $components = array(
    'Auth' => array(
        'loginAction' => 'login',
        'loginRedirect' => 'home',
        'authenticate' => array(
            'Form' => array(
                'userModel' => 'User',
                'fields' => array( 'password' => 'password' ),
                'scope' => array( 'User.active' => true )
            )
        )
    )
);
于 2012-09-21T14:58:08.407 に答える
-1

私が間違っていなければ、あなたはそれをするべきですbeforeFilter()

public function beforeFilter(){
    parent::beforeFilter();
    $this->Auth->authenticate = array(
        AuthComponent::ALL => array('userModel' => 'Member'),
        'Form',
        'Basic'
    );
}

また、Martinがすでに述べたように、メソッドが呼び出される現在のオブジェクトを参照するため$this、(オブジェクト)メソッドでのみ使用できます。$this

于 2012-09-21T14:55:07.050 に答える