2

過去 2 日間、次の問題で苦労していますが、まだ解決できません。

http://akrabat.com/zend-auth-tutorial/の助けを借りてZend_Auth、Zend Frameworkを使用して認証モジュールを作成しています。認証が成功した後、次を使用してユーザーデータを保存していgetStorage()ます。

例 :

AuthController.php

メソッド_processで私はこのように書いています:

protected function _process($values) {
        // Get our authentication adapter and check credentials        
        $adapter = $this->_getAuthAdapter();
        $adapter->setIdentity($values['username']);
        $adapter->setCredential($values['password']);

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

        if ($result->isValid()) {
            $user = $adapter->getResultRowObject();
            $auth->getStorage()->write($user);                            
            return true;
        }
        return false;
    }

print_r($user)結果を表示する:

stdClass Object ( [id] => 1 [username] => admin [password] => cb3aefbdffbc81588f3d43c394428b16d4346b44 [salt] => ce8d96d579d389e783f95b3772785783ea1a9854 [role] => administrator [date_created] => 2012-12-29 11:04:40) 

また、

        print_r($auth->getStorage()->read());

これも結果を表示します。

Logoutここで、ユーザーが正常にログインした場合にリンクを表示したいと考えています。

view\helpers\LoggedInAs.php

    class Zend_View_Helper_LoggedInAs extends Zend_View_Helper_Abstract {

    public function loggedInAs() {
        $auth = Zend_Auth::getInstance();
        if ($auth->hasIdentity()) {
            $username = $auth->getIdentity()->username;
            $logoutUrl = $this->view->url(array('controller' => 'auth',
                'action' => 'logout'), null, true);
            return 'Welcome ' . $username . '. <a href="' . $logoutUrl . '">Logout</a>';
        }

        $request = Zend_Controller_Front::getInstance()->getRequest();
        $controller = $request->getControllerName();
        $action = $request->getActionName();
        if ($controller == 'auth' && $action == 'index') {
            return '';
        }
        $loginUrl = $this->view->url(array('controller' => 'login', 'action' => 'index'));
        return '<a href="' . $loginUrl . '">Login</a>';
    }

}

しかし、メソッドを呼び出していhasIdentityないため、ifブロックに移動せず、

print_r($auth)次のような出力を表示します。

Zend_Auth Object ( [_storage:protected] => )

私がやっている場合はprint_r($_SESSION);、空の配列も表示されます。問題は$_SESSION、コントローラーとモジュールで動作していますが、view/helpers空の配列が表示されていることです。

Bootstrap.php

protected function _initSession() {
    try {
        Zend_Session::start();
    } catch (Zend_Session_Exception $e) {
        session_start();
    }
}

Zend Framework バージョンを使用してい1.11ます。

SessionこれがまたはZend_Auth::getInstance()またはの問題かどうかはわかりませんview helpers

Zend_ACLこの問題のため、学習モジュールに進むことができません。どうすればこれを修正できますか。

どんな助けでも大歓迎です。

前もって感謝します

4

1 に答える 1

0

以下のコードをクラスの上に置きますview helper...view\helpers\LoggedInAs.php

/**
 * @see Zend_Session
 */
require_once 'Zend/Session.php';

/**
 * @see Zend_View_Helper_Abstract
 */
require_once 'Zend/View/Helper/Abstract.php';
于 2012-12-31T06:06:26.063 に答える