0

検索と検索がありますが、答えがありません。ZendFrameworkを使用してユーザーを作成し、成功すると、レコードをzend authに保存して、自動的にログインします。

createユーザーは完璧に機能していますが、成功した後、_getAuthAdpater()を起動して、ユーザーにサインインする必要があります。

以下のコードを実装しましたが、セッションにユーザーデータが保存されません。これが私の機能です。

パブリック関数registerAction()

$proUser = new Application_Model_DbTable_ProUser;
$userId = $proUser->addProUser($data['email'], $data['name'], $data['password']);if($userId){

                // add new row into proBasic
                $proBasic = new Application_Model_DbTable_proBasic;
                $proBasic->addProBasic($userId);

                // add new row into proService
                $proService = new Application_Model_DbTable_proService;
                $proService->addProService($userId);                

                // Create auth session for proUser
                $adapter = $this->_getAuthAdapter();
                $adapter->setIdentity($data['email']); 
                $adapter->setCredential($data['password']);

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

                if ($result->isValid()) {

                    $user = $adapter->getResultRowObject(array(
                        'proId',
                        'proName',
                        'proEmail',                     
                    ));                     
                    $auth->getStorage()->write($user);
                    return true;

                }

                return $this->_redirect('/auth/probasic/');
            }

_getAuthAdapter()関数は次のとおりです。

    private function _getAuthAdapter()
{

    $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
    $authAdapter->setTableName('proUser')
                ->setIdentityColumn('proEmail')
                ->setCredentialColumn('proPassword');       

    return $authAdapter;            
}

このコードでエラーは発生していませんが、ユーザーの詳細が認証に保存されていません。Zendでログイン/サインアップシステムを作成する方法の例を何百も見つけましたが、どれも自動的にユーザーにログインしないので、何か別のことをしようとしているのではないかと思います。

乾杯

J。

4

1 に答える 1

2

登録直後にセッションを作成する場合は、実際に認証する必要はありません。その後、すべてのコードを次のように置き換えるとどうなりますか$proService->addProService($userId)

$auth = Zend_Auth::getInstance();
$auth->getStorage()->write($data['email']);
于 2011-10-30T18:04:11.190 に答える