글쎄, Zend_Auth
모듈을 깨고 Zend_Ldap
모듈을 직접 사용하는 방법을 발견했습니다. 누구나 Auth 또는 AuthAdapter 객체를 사용하여이를 수행하는 방법을 알고 있다면 기꺼이 배울 수 있습니다!
이
로그인 기능 :
$authAdapter = new Zend_Auth_Adapter_Ldap(array(
'server1' => array(
'host' => Zend_Registry::get('LDAP_host'),
'accountDomainName' => Zend_Registry::get('LDAP_domainName'),
'accountCanonicalForm' => 2,
'baseDn' => Zend_Registry::get('LDAP_baseDn'),
'bindRequiresDn' => TRUE,
)
));
$authAdapter->setIdentity($_POST['username']);
$authAdapter->setCredential($_POST['passwd']);
$auth = Zend_Auth::getInstance();
// Do the login
$rs = $auth->authenticate($authAdapter);
if (!$rs->isValid()) {
// Login failed
exit;
}
// Login succeeded
는 인증 된 사용자에 대한 확인 : 우리는 현재 인증 된 경우 Zend_Ldap
을 만들어 다양한 LDAP 옵션을 저장하고 현재 사용자 정보에 Zend_Registry
를 사용하고
AuthAdapter와 유사한 옵션을 사용하는 객체를 찾고이 사용자 ID를 검색하십시오.
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
$uid = $auth->getIdentity();
Zend_Registry::set('cur_user', $uid); // Save username
$ldap = new Zend_Ldap(array(
'host' => Zend_Registry::get('LDAP_host'),
'accountDomainName' => Zend_Registry::get('LDAP_domainName'),
'accountCanonicalForm' => 2,
'baseDn' => Zend_Registry::get('LDAP_baseDn'),
'bindRequiresDn' => TRUE,
));
$ldap->bind();
$rs = $ldap->getEntry('uid='.$uid.','.Zend_Registry::get('LDAP_baseDn'), array('displayname', 'mail'));
Zend_Registry::set('cur_user_name', $rs['displayname'][0]);
Zend_Registry::set('cur_user_mail', $rs['mail'][0]);
} else {
Zend_Registry::set('cur_user', 'Anonymous');
Zend_Registry::set('cur_user_name', 'Anonymous');
Zend_Registry::set('cur_user_mail', '[email protected]');
}
이것은 거의가는 길입니다. AUTHENTICATION 목적을위한 Zend_Auth_ * ist. 자격 증명을 확인하고, 그룹을 확인하지만 등등. 당신이 발견 한 것을 실제로하지 마십시오. 정보를 얻는 방법이 정말 좋고, LDAP로 많은 일을하지 못했습니다. 매우 유용하다고 생각합니다! – Sam
LDAP 작동 방식에서 Zend_Auth가 사용자로 인증을 시도 할 때 LDAP의 해당 사용자 데이터에 "바인딩"되어야하며 해당 바인딩 결과의 일부는 해당 사용자의 LDAP 항목에있는 추가 데이터 여야합니다. 나는 그 사용자를 가져 오기 위해 그 사용자에게 재 바인딩 할 필요가 없다. – MidnightLightning
물론 두 배가되지만 Zend_Auth가 작동하는 방식 일뿐입니다. 언제든지 Zend_Auth 및 Zend_Auth_Adapter_Ldap을 코드로 확장하여 결과를 얻을 수 있습니다. 그러나 내 지식으로는 더 많은 정보에 접근 할 수있는 방법이 없습니다. – Sam