2014-10-06 49 views
0

我正在使用adldap庫來針對Active Directory對用戶進行身份驗證。下面是一段代碼,我用它來驗證Zend LDAP身份驗證 - 如何設置身份和getIdentity

$username = $_POST['username']; 
$password = $_POST['password']; 

require_once '/adlap/adLDAP.php'; 

try { 
    $adldap = new adLDAP(); 
} 
catch (adLDAPException $e) { 
    echo $e; 
    exit(); 
} 

$authUser = $adldap->user()->authenticate($username, $password); 

應該如何我setIdentity用戶?

在登錄系統,我們存儲的用戶名和密碼,我們可以setIdentity如下面提到

$adapter = $this->_getAuthAdapter(); 
$adapter->setIdentity($values['username']); 
$adapter->setCredential($values['password']); 


protected function _getAuthAdapter() { 

     $dbAdapter = Zend_Db_Table::getDefaultAdapter(); 
     $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); 

     $authAdapter->setTableName('users') 
       ->setIdentityColumn('username') 
       ->setCredentialColumn('password') 
       ->setCredentialTreatment('SHA1(CONCAT(?,salt))'); 


     return $authAdapter; 
    } 

我不是在數據庫存儲密碼,直接檢查它針對Active Directory。所以我無法使用上述解決方案。 怎能我setIdentity用戶的,這樣我可以檢查用戶是否hasIdentity()這樣的

$auth = Zend_Auth::getInstance(); 
    if ($auth->hasIdentity()){ 
    } 

我提到了以下問題#1 Get display name for Zend LDAP Authentication。 但是我不確定我們應該如何「獲得('LDAP_host')」Zend Registry,我們應該如何設置它。下面是我與 'host'=> Zend_Registry :: get('LDAP_host'),

可以幫我嗎?

回答

0

Zend_Registry::get('LDAP_host')只是簡單地返回您的LDAP服務器的主機名。在該行代碼之前的某處,您會找到一條類似於Zend_Registry::set('LDAP_host', 'ldap.example.com')的行,它將ldap.example.com設置爲LDAP服務器。

getAuthAdapter()在你的情況下返回一個Zend_Auth_Adapter_DbTable的實例,但你想要一個Zend_Auth_Adapter_Ldap的實例。所以你必須調用不同的方法/函數getLdapAuthAdapter()或重寫當前的方法。

public function getLdapAuthAdapter() { 
    return new Zend_Auth_Adapter_Ldap(array(
     'host'     => 'ldap.example.com', 
     'accountDomainName'  => 'example.com', 
     'accountDomainNameShort' => 'EXAMPLE', 
     'accountCanonicalForm' => 3, 
     'username'    => "CN=user1,DC=example,DC=com", 
     'password'    => 'pass1', 
     'baseDn'     => "DC=example,DC=com", 
     'bindRequiresDn'   => true, 
    )); 
} 

$adapter = $this->getLdapAuthAdapter(); 
$adapter->setIdentity($values['username']); 
$adapter->setCredential($values['password']); 
$result = $adapter->authenticate(); 

希望有所幫助。

+0

非常感謝:)請試一試,讓你知道它是如何工作的 – Thanu 2014-10-06 11:31:53