2013-01-23 18 views
6

मैं जेडएफ 2 का उपयोग कर एक एप्लीकेशन विकसित कर रहा हूं। मैंने उपयोगकर्ता नाम & पासवर्ड के साथ उपयोगकर्ता प्रमाणीकरण किया है। लेकिन, मैं प्रमाणीकरण में एक अतिरिक्त कॉलम (उदाहरण: स्थिति) की जांच करना चाहता हूं।जेडएफ 2 प्रमाणीकरण

मैं निम्नलिखित कोड का काम किया है।

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

@ डेवलपर आप वास्तव में एमडी 5 का उपयोग क्रेडेंशियल उपचार के रूप में नहीं कर रहे हैं, है ना? –

+0

@ डैनियल मैं हमेशा क्रेडेंशियल ट्रीटमेंट का उपयोग करता हूं, लेकिन उपयोगकर्ता 20033356 इसका उपयोग नहीं कर सकता है, ऊपर उत्तर प्रश्न के आधार पर उत्तर है। – Developer

1

ZF2 एक दूसरे तरीके से विधि getResultRowObject को पहचान और क्रेडेंशियल धन्यवाद के लिए अनुमान की तुलना में अन्य स्तंभों का उपयोग अतिरिक्त जांच को संभालने के लिए प्रदान करता है। आपके उदाहरण में usertable के सभी कॉलम getResultRowObject() द्वारा लौटे ऑब्जेक्ट के गुण के रूप में उपलब्ध हैं। तो अगर आप इस के साथ अपने कोड का विस्तार कर सकते हैं:

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

सादर, मार्क

संबंधित मुद्दे