2010-03-18 9 views
2

로그인 양식 :Zend_Auth 여러 자격 증명?

$authAdapter = Zend_Registry::get('authAdapter'); 
    $authAdapter 
    ->setIdentity($formData['email']) 
    ->setCredential($password) 
    ->setCredential(1); 

부트 스트랩 :

protected function _initAuth(){ 
    $this->bootstrap('db'); 
    $this->bootstrap('session'); 

    $db    = $this->getPluginResource('db')->getDbAdapter(); 
    $auth   = Zend_Auth::getInstance(); 
    $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', 'enabled'); 

    Zend_Registry::set('authAdapter', $authAdapter); 
    return $authAdapter; 
} 

내가 제거하는 경우는, 작동이 중지 '활성화'를 추가 분명히 이후 :

->setCredential(1); 

와 '활성화'거기에서 :

($db, 'User', 'email', 'password', 'enabled'); 

잘 작동합니다 ...

사용 계정이있는 사용자 만 로그인 할 수 있습니다.

편집 :

 $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', '(?) AND `enabled` = 1'); 

작품 : 당신은 너무처럼 어댑터를 수정해야

답변

1

:

$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', 'AND enabled  > 1'); 

을 제거 :

$authAdapter = new Zend_Auth_Adapter_DbTable(
    $db, 
    'user', 
    'email', 
    'password', 
    'MD5(?) AND `enabled` = "true"'); 
1

시도하십시오

->setCredential(1); 
+0

이 작동하지 않았다에 추가 조건을 설정할 수 있습니다. 사실 나는 'AND' enabled' ='1 ''을 'AND jimmy = blah'로 변경했고, 여전히 로그인하여, 그 마지막 필드를 무시했다고 믿습니다! – azz0r

+0

첫 번째 게시물보기 : \t \t $ authAdapter = new Zend_Auth_Adapter_DbTable ($ db, 'User', '이메일', 'password', '(?) AND'enabled'= 1 '); – azz0r

+0

어때? $ authAdapter = new Zend_Auth_Adapter_DbTable ($ db, 'User', 'email', 'password'); 다음 $ select = $ authAdapter-> getDbSelect(); $ select-> where ('enabled = 1'); $ authAdapter-> authenticate(); ZF 버전을 사용하고 계십니까? thx –

0

당신은 인증 어댑터 즉

$select = $authAdapter->getDbSelect(); 
$select->where("isActive = ?","Active");