1

사용자 로그인 및 인증을 위해 이메일 확인을 사용했습니다. 그의 이메일로 보낸 링크를 클릭하면 상태가 status=1이되도록 코드를 작성했습니다. 그런 다음 로그인 페이지로 리디렉션됩니다. 그는 등록시 주어진 것과 동일한 세부 사항으로 로그인해야합니다. 전자 메일 주소와 암호가 일치 할 때 사용자가 인증되고 로그인 한 유효성 검사를 작성했습니다. 그러나 유효성 검사에서 상태가 1인지 여부도 확인해야하며 사용자가 허용되어야하는 조건 하나를 추가해야합니다. status=1 일 때만 로그인하십시오. 이를 위해 로그인 액션에 변수를 추가하고 where status=1을 확인해야합니다. 어떻게해야합니까? 아래 코드에서 나는 emailpassword에 대해서만 유효성을 검사하고 있습니다. status=1 조건을 만족시키는 방법?젠드 프레임 워크 등록 1.12 확인 이메일 메커니즘

이 내 loginAction

 public function loginAction() 
{ 
    if(Zend_Auth::getInstance()->hasIdentity()) 
    { 
     $this->_helper->redirector('register','user','default'); 
    } 
    $authAdapter = $this->getAuthAdapter(); 

    if(isset($_POST['submit'])) 
    { 
    $post=$this->_request->getPost();   
    $email = $post['user_email']; 
    $password = $post['password']; 
    $authAdapter->setIdentity($email) 
       ->setCredential($password); 
    $auth = Zend_Auth::getInstance(); 
    $result = $auth->authenticate($authAdapter); 
    if($result->isvalid()){ 
     $identity = $authAdapter->getResultRowObject(); 
     $authStorage = $auth->getStorage(); 
     $authStorage->write($identity); 
    $this->_helper->redirector('register','user','default'); 
     echo 'valid'; 
    } else { 
     $this->view->errorMessage = "User name or password is incorrect"; 
    } 

}

이 내 statusAction입니다

 public function statusAction() 
{ 
    $url = explode('&',urldecode($this->_getParam('k'))); 
    $data['email'] = $url[0]; 
    $data['status'] = 1; 
    $data['access_key'] = $url[1]; 
    $mapper = new Application_Model_UserMapper(); 
    $status = $mapper->update($data); 
    $this->_helper->redirector('index','projects','default'); 
} 

답변

0

은 그냥 AuthAdapter을주고있는 어디 상태 필드에 대한 조항 :

,
$select = $authAdapter->getDbSelect(); 
$select->where('status' = 1); 

는 그래서는 다음과 같습니다

$authAdapter = $this->getAuthAdapter(); 

if(isset($_POST['submit'])) 
{ 
    $post = $this->_request->getPost();   
    $email = $post['user_email']; 
    $password = $post['password']; 

    $authAdapter->setIdentity($email) 
       ->setCredential($password); 

    // and status is equal 1    
    $select = $authAdapter->getDbSelect(); 
    $select->where('status' = 1); 

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

if($result->isvalid()){ 
    $identity = $authAdapter->getResultRowObject(); 
    $authStorage = $auth->getStorage(); 
    $authStorage->write($identity); 
    $this->_helper->redirector('register','user','default'); 
    echo 'valid'; 
} else { 
    $this->view->errorMessage = "User name or password is incorrect"; 
} 

테스트,하지만 작동해야되지 않음)

+0

그것은 @arnerie – Rajitha

+0

당신이 좀 더 많은 정보를 정기적으로하시기 바랍니다 제공 할 수있는 작동하지 않습니다? ;) – opHASnoNAME