0

Doctrine2を搭載したZendFramework1.11はかなり新しいものです。

Doctrineを使用してログインなどを正常に作成しました。

私の現在の問題は、ログインが含まれているコントローラー内にいるときに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;
}
4

1 に答える 1

0

Zend_Session :: RememberMe(); ブートストラップでこの問題を解決しました

于 2012-10-01T05:42:16.763 に答える