2013-01-23 9 views
6

iはZF2を使用してアプリケーションを開発しています。私はユーザ名&のパスワードでユーザ認証を行っています。しかし、認証時に追加の列(例:status)をチェックしたいと思います。ZF2認証

私は以下のコードを行っています。

public function authenticate() 
{  
    $this->authAdapter = new AuthAdapter($this->dbAdapter, 
      'usertable', 
      'username', 
      'password' 
    ); 

    $this->authAdapter->setIdentity($this->username) 
       ->setCredential($this->password) 
       ->setCredentialTreatment('MD5(?)'); 
    $result = $this->authAdapter->authenticate(); 
    return $result; 
} 

認証で「ステータス」列を確認するにはどうすればよいですか? 注:ステータス値は1 感謝しなければなりません。

答えて

7

私はZF2と教義を使用して、私の認証を構築したとき、私は認証のための余分な列を渡すために、認可プラグインやカスタマイズthis adapterを作成しました。 おそらく同様の方向に進む必要があります。あなたのコードは次のようになります変更後

$adapter = new AuthAdapter($db, 
          'users', 
          'username', 
          'password', 
          'MD5(?)' 
          ); 

// get select object (by reference) 
$select = $adapter->getDbSelect(); 
$select->where('active = "TRUE"'); 

// authenticate, this ensures that users.active = TRUE 
$adapter->authenticate(); 

Reference

public function authenticate() 
{  
    $this->authAdapter = new AuthAdapter($this->dbAdapter, 
      'usertable', 
      'username', 
      'password' 
    ); 

    $select = $this->authAdapter->getDbSelect(); 
    $select->where('status= "1"'); 
    $this->authAdapter->setIdentity($this->username) 
       ->setCredential($this->password) 
       ->setCredentialTreatment('MD5(?)'); 
    $result = $this->authAdapter->authenticate(); 
    return $result; 
} 
+0

をありがとうございました。それは働いている。すばらしいです!!!。 – user2003356

+0

@Developerあなたは本当に資格証明の扱いとしてMD5を使用していませんか? –

+0

@Danielは、私はいつもCredentialTreatmentを使用しますが、答えは質問に基づく回答である上user2003356は、それを使用していない可能性があります。 – Developer

1

ZF2アイデンティティおよび方法getResultRowObjectに資格感謝のために予見以外の列を使用して追加チェックを処理するための別の方法を提供します。あなたの例ではusertableのすべての列がgetResultRowObject()によって返されたオブジェクトのプロパティとして利用できます。だから、これであなたのコードを拡張することができます:

if ($result->isValid()) { 
    $identityRowObject = $this->authAdapter->getResultRowObject(); 
    $status = $identityRowObject->status; 
    // do whatever complex checking you need with $status... 
} 

よろしく、 マルク・