1

問題: ログイン時のユーザー ステータスに基づいて、ユーザーに異なるエラー メッセージを表示したい (ajax を使用)。例: ユーザー ステータスが保留中の場合は 1 つのメッセージを表示したい、またはユーザー ステータスが無効の場合は別のメッセージを表示したい。アクティブなユーザーのみがログインできる必要があります。

いくつかの検索の後、使用できることがわかりました

  1. 識別方法

    また

  2. if ($this->Auth->login())ログイン メソッドの" " 条件内に自分の条件を記述する必要があります。

カスタム コンポーネント (認証を拡張する) で最初のメソッドを使用する場合、それが true または false のみを返すことを願っていますよね? コントローラーから取得できるように、エラーメッセージを設定して返すことはできますか?

ユーザーのログインを許可した後に 2 番目の方法を使用する場合は、ステータスを確認する必要があります。ステータスがアクティブでない場合は、Auth/Session からログイン資格情報を削除する必要があります。どうやってやるの ?これは良い方法ですか?

他のより良い解決策はありますか? Cakephp2.0を使用しています

4

1 に答える 1

3

ユーザーのために BaseAuthenticate から拡張するクラスを作成し、これを AppController 内に設定します。

public $components = array(
    'Session',
    'Auth' => array(
        'loginRedirect' => ..... ,
        'logoutRedirect' => ..... ,
        'loginAction' => ..... ,
        'authenticate' => array('YourUsers'),
    )
);

そして、クラスを作成します

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

class YourUsersAuthenticate extends BaseAuthenticate {

    public function authenticate(CakeRequest $request, CakeResponse $response) {
        // your code goes in here
    }
}

認証内から false を返してユーザー アクセスを拒否するか、成功時にオブジェクトを返して $this->Auth->user に保存し、後で問い合わせることができます。

行き詰まった場合は、クックブックにこれに関する多くの詳細があります。

于 2012-10-18T14:54:44.403 に答える