2010-07-28 2 views
2
내가 오픈 ID에 대한 액세스를 제공하기 위해 Zend_OpenId_Consumer을 사용하고

, 로그인이 잘 작동,하지만 난 verify()를 호출 할 때 나는 최대한 멀리 볼 수 있다는 것입니다 오류젠드 프레임 워크 오픈 ID 소비자

`Wrong openid.return_to 'http://[host]/user/openid' != 'http://[host]/user/openid?[OpenIdResponse] 

에게 문제를 잡하고 verify 메소드는 쿼리 부분이없는 URL을 모든 OpenID 응답 정보를 포함하는 전체 URL과 비교합니다. 그것은 내가이 문서 페이지

$consumer = new Zend_OpenId_Consumer(); 

if($this->_request->getParam('openid_mode')) { 

    $id = $this->_request->getParam('openid_claimed_id'); 

    if($this->_request->getParam('openid_mode') == 'id_res') { 

     if($consumer->verify($this->_request->getParams(),$id)) { 
      $status = 'VALID ' . $id; 
     } 
     else { 
       $status = 'INVALID ' . $id; 
     } 

    } 
    elseif($this->_request->getParam('openid_mode') == 'cancel') { 
     $status = 'CANCELLED'; 
    } 
} 

에서 코드를 확인 사용하고 Zend_OpenId::selfUrl()

에서이 URL을 가져옵니다 내가 잘못 여기서 뭔가를하고 있습니까?

답변

1

아마도이

Zend_Controller

통합 도움이 마지막으로 모델 - 뷰 - 컨트롤러 애플리케이션에 통합에 대한 단어 몇 : 같은 젠드 프레임 워크 응용 프로그램은 Zend_Controller 클래스를 사용하여 구현 그들은 Zend_Controller_Response_Http 클래스의 객체를 사용하여 HTTP 응답을 준비하고을 보냅니다. 0을 사용자의 웹 브라우저로 다시 보냅니다. Zend_OpenId_Consumer는 GUI 기능을 제공하지 않지만 Zend_OpenId_Consumer :: login 및 Zend_OpenId_Consumer :: check 성공시 HTTP 리디렉션을 수행합니다. 이 리디렉션은 올바르게 작동하지 않을 수도 있고 일부 데이터가 이미 웹 브라우저로 전송 된 경우 이 전혀 작동하지 않을 수도 있습니다. 제대로 는 MVC 코드 이 Zend_OpenId_Consumer : 로그인 또는 Zend_OpenId_Consumer에 송신해야하는 실제 Zend_Controller_Response_Http에서 HTTP 리디렉션을 수행하려면 :: 마지막 인자로 확인.

zend.openid.consumer

이상한, 난 그냥 모든

내 작업

public function openidAction() { 
     $this->view->status = ""; 
     if ($this->getRequest()->isPost()) { 
     $consumer = new Zend_OpenId_Consumer(); 
     if (!$consumer->login($this->getRequest()->getParam('openid_identifier'))) { 
      $this->view->status = "OpenID login failed."; 
     } 
     } else if ($this->getRequest()->getParam('openid_mode')) { 
     if ($this->getRequest()->getParam('openid_mode') == "id_res") { 
      $consumer = new Zend_OpenId_Consumer(); 
      if ($consumer->verify($this->getRequest()->getParams(), $id)) { 
       $this->view->status = "VALID " . htmlspecialchars($id); 
      } else { 
       $this->view->status = "INVALID " . htmlspecialchars($id); 
      } 
     } else if ($_GET['openid_mode'] == "cancel") { 
      $this->view->status = "CANCELLED"; 
     } 
     } 
    } 

내보기에 ZF 1.10.3 ... 문제없이 내 localserver에 OpenId_Consumer을 테스트했습니다

<p><?php echo "{$this->status}" ?></p> 
<form method="post"> 
    <fieldset> 
     <legend>OpenID Login</legend> 
     <input type="text" name="openid_identifier" value=""/> 
     <input type="submit" name="openid_action" value="login"/> 
    </fieldset> 
</form> 
+0

T 행크 슬프지만 슬프게도. 난 그냥 로그인 메서드에 응답 개체를 통과 시도했지만 문제가 여전히 확인 메서드에있는 것 같다. –

+0

편집 해 주셔서 감사합니다. 실행중인 PHP 버전은 무엇입니까? –

+0

PHP 5.3.2 및 ZF 1.10.3 – teemitzitrone