我有一個場景,我需要檢查一些額外的列,而進行身份驗證。這是因爲,應用程序在數據庫中存儲了一些用戶名,而在LDAP中存儲了一些。身份驗證優先級用於數據庫中的用戶名。如果數據庫中存在用戶名,我們將不檢查LDAP,否則我們將在LDAP中檢查它。在Zend身份驗證中,我如何檢查附加列以及身份驗證?
對於LDAP用戶,我們將同一個「用戶」表中的用戶名保留一份空白密碼列。爲了惡化這兩組用戶,還有一個名爲userDirectory的列,其值爲「LDAP和INTERNAL」。我們必須爲特定於應用程序的設置和全部保留LDAP用戶名的副本。
而且用戶名+ userDirectory是唯一鍵
現在我的問題是,有時會有多個用戶使用同一個用戶名,但在不同的userDirectory。如上所述,LDAP用戶不會在數據庫中存儲密碼,並且身份驗證是一個單獨的代碼片段。
我正在使用下面的代碼進行數據庫身份驗證。即使我正在添加條件setCredentialTreatment('md5(?)AND userDirectory =「internal」'),它也正在搜索LDAP用戶。如何限制這對於userDirectory = '內部'
$dbAdapter = Zend_Db_Table::getDefaultAdapter();
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
$authAdapter->setTableName('users')
->setIdentityColumn('username')
->setCredentialColumn('password')
->setCredentialTreatment('md5(?) AND userDirectory="internal"');
$authAdapter->setIdentity($username);
$authAdapter->setCredential($password);
這對我很有用,我不需要更改我的代碼。非常感謝您的時間和答覆。 – codlib