2011-11-02 8 views
0

나는 다양한 그룹 코드를 사용하여 사용자 로그인 양식을 작성했습니다. 사용자 로그인은 고유 한 그룹 코드를 기반으로 작동해야합니다. 자세히 설명해주십시오. 두 명의 사용자 (X 및 Y)가 사이트에 있습니다 다음과 같은 세부 사항을ZEND 인증이 실패합니다

X [email protected] pwd- 123456 ,groupcode-TESTCODE 
Y [email protected] pwd-test124, groupcode-TESTCODE2  

내 Authcontroller는 인증을 통해

$adapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter(), 
             'users', 
             'login', 
             'password', 
             'MD5(?)','groupcode','TESTCODE'); 

$adapter->setIdentity($form->getValue('username')) 
        ->setCredential($form->getValue('password')); 

$result = Zend_Auth::getInstance()->authenticate($adapter); 

결과 alwyas는 잘못된 오류 님에게 메일을 갔다. 기본 authcontroller는 두 사용자 행의 idenfity를 가져 오며 사용자 고유 행 값을 사용하지 않습니다.

답변

2

이 문제를 완전히 이해하고 있는지 잘 모르겠지만 이러한 솔루션 중 하나가 도움이 될 것입니다.

먼저 Zend_Auth_Adapter_DbTable 생성자에 7 개의 인수를 전달하지만 생성자는 5 개의 인수 만 허용하므로 그룹 코드와 테스트 코드는 코드에 아무런 영향을 미치지 않습니다.

아마도 1 개 이상의 결과를 얻으므로 모호성 확인 플래그를 설정하면 문제가 해결 될 수 있습니다. $adapter->setAmbiguityIdentity(true);을 호출하여 설정하면 결과가 두 개 이상 반환되면 각각 일치하는 암호를 찾습니다.

그룹 코드 및 테스트 코드를 전달해야하는 경우 자체 인증 어댑터를 만들어야 할 수 있습니다. Zend_Auth_Adapter_DbTable에서 확장하여 이미 수행 한 작업을 활용할 수 있지만 authenticate()를 재정 의하여 그룹을 고려해야합니다.

또는 Zend_Auth를 사용하여 ID를 확인하지만 authenticate 메소드를 전혀 사용하지 않고 사용자 로그인의 유효성을 검사하기위한 클래스를 직접 작성한 다음 Zend_Auth를 사용하여 ID를 설정할 수 있습니다.

관련 문제