代码之家  ›  专栏  ›  技术社区  ›  Neil Aitken

Zend框架OpenID使用者

  •  2
  • Neil Aitken  · 技术社区  · 14 年前

    verify() 我收到了这个错误

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

    Zend_OpenId::selfUrl()

    我用的是文档里的验证码

    $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';
        }
    }
    

    1 回复  |  直到 14 年前
        1
  •  1
  •   teemitzitrone    14 年前

    也许这是有帮助的

    与Zend\u控制器集成

    最后说了几句关于 集成到模型视图控制器中 应用:如Zend框架 Zendèu控制器类,它们使用 目标 Zend\u控制器\u响应\u Http类 准备HTTP响应并发送它们 返回用户的web浏览器。 Zend\u OpenId\u消费者不提供 任何GUI功能,但它执行 HTTP重定向成功 Zend\u OpenId\u Consumer::登录并 Zend\u OpenId\u Consumer::检查。这些 如果已经有了一些数据,那就不需要了 发送到web浏览器。适当地 在MVC代码中执行HTTP重定向 应发送到 Zend\u OpenId\u Consumer::检查为 最后一个论点。

    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";
             }
          }
       }
    

    <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>