2012-09-30 58 views
0

相當新之間持續到Zend Framework的1.11與學說2.Zend_Auth的身份不控制器

我一直在使用學說成功地創建一個登錄等。

雖然我當前的問題是,當我留在控制器內登錄時,Zend_Auth實例工作正常。

如果我嘗試在任何其他控制器中確定Zend_Auth :: getInstance-> HasIdentity()的狀態,它將返回空白。

如果我然後返回到包含登錄/身份驗證hasIdentity的控制器中的任何頁面都可以正常工作。

我甚至嘗試寫入存儲,但這沒有提供任何喜悅。

我的身份驗證代碼如下這就是所謂點擊登錄後(在MembersareaController)的作用

public function authAction() 
{ 
    $this->_helper->viewRenderer->setNoRender(true); 

    $loginForm = new Application_Model_Login(); 

    if($this->getRequest()->isPost()){ 
     $usr = ""; 
     $pwd = ""; 
     $KeepLoggedIn = false; 
     $message = ""; 

     $usr = $this->_getParam('username'); 
     $pwd = $this->_getParam('password'); 
     $pwdMd5 = md5($pwd); 

     if($usr !== "" && $pwd !== ""){ 

      $GDSAdaptor = new ZC_Auth_Adapter($usr, $pwdMd5); 

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

      if(\Zend_Auth::getInstance()->hasIdentity()){ 
       $this->flashMessenger->addMessage(LOGIN_SUCCESS); 
       $this->_redirect('/membersarea/index'); 
      }else{ 
       $this->flashMessenger->addMessage(LOGIN_INVALID); 
      } 
     }else{ 
      $this->flashMessenger->addMessage(LOGIN_MISSING_FORMVAL); 
      $this->_redirect('/membersarea/login'); 
     } 
    } 

試圖看到下面的代碼不會產生任何結果的人登錄上的IndexController。 hasIdentity返回一個空白值。

public function indexAction() 
{ 

    if(Zend_Auth::getInstance()->hasIdentity()) 
    { 
     $msg = "hasIdentity: YES"; 
    }else{ 
     $msg = "hasIdentity: NO"; 
    } 

    $this->view->msg = $msg; 
} 
+0

你確定你的PHP會話的cookie設置爲正確的域嗎?我認爲你應該驗證使用螢火蟲 – RageZ

+0

嗨。感謝您的回覆。 我比較了使用兩者之間的Firebug的cookie信息,並且cookie信息是相同的。 –

+0

我注意到,有兩個不同的PHPSESSION ID域的獨立餅乾和路徑是不同的。其中一個路徑設置爲'/ membersarea',這是控制器的auth內容,第二個設置爲主頁'/'。 –

回答

0

Zend_Session :: rememberMe();在引導程序解決了這個問題

相關問題