2010-12-31 15 views
6

ログイン中にユーザーのアカウントが有効になっているかどうかを確認したいが、ケーキの認証コンポーネントが制御方法がわからない方法でログインを処理する。 Cakeは基本的に空白のログイン機能を使用しています。私はUser.activeの値をチェックする方法がわかりません。事前にcakephpカスタムログイン条件

おかげ

答えて

11

AuthComponentには、$ userScopeという追加の条件を設定するプロパティがあります。

$this->Auth->userScope = array('User.active' => true); 

注:上記のケーキ1.xのに適用される

はちょうどあなたのbeforeFilter()認証の設定ブロック内の行を含めます2.xの使用の場合:

$this->Auth->scope = array('User.active' =>true); 

は、次に、あなたのログイン方法を空白にしておくことができ、訪問者を認証する際Authコンポーネントは、この余分な条件を追加します。

あなたはここにすべての追加のプロパティを見ることができます: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#configuring-authentication-handlers

を使用すると、この余分なスコープが含まれていない場合は、非アクティブなユーザーがまだログインすることができます、あなたの中でそれらをログアウトする必要があると思いますチェックした後にlogin()メソッドを呼び出します。

0
ユーザーコントローラで

、またはあなたはそれを配置する(ログインフォームへのリンクには、アクション)好きな場所:

function login() { 
    if ($this->Session->read('Auth.User')) { 
     $active = $this->Auth->user('active'); 
     if ($active) { 
      //(do stuff) 
     } 
     else { 
      //(do other stuff) 
     } 
    } 
} 

これが「アクティブ」があることを前提としtrueまたはfalse(または1または0)のいずれかを含むUserテーブルの列。 $ this-> Auth-> user()を使うと、現在ログインしているユーザーのデータにアクセスできます。詳細はこちら:http://book.cakephp.org/view/1264/user

+0

あなたの答えをありがとうが、何とかそれは私のために働かなかったし、とにかく私は彼がアクティブでない場合にユーザーをログインさせるというアイデアが好きではない。とにかくありがとう ;) – Elwhis

関連する問題