0

祝大家好日子,

我有以下代码将存储数据附加到Zend_Auth对象

    $auth        = Zend_Auth::getInstance();

    $dbAdapter   = Zend_Db_Table::getDefaultAdapter();

    $authAdapter = new Zend_Auth_Adapter_DbTable(
    $dbAdapter,
                'account', 
                'email', 
                'password',
                'delete_flag=0'
    );
    //MD5(?) AND  .. add this along with the prev where condn of delete flag...

    $authAdapter->setIdentity($loginDataArray['email'])
    ->setCredential($loginDataArray['password']);

    $result = $auth->authenticate($authAdapter); 
    var_dump($result);

    if ($result->isValid()) {

        $authStorage = $auth->getStorage();

        // the details you wan to store in the session
        $userDetails = array();         

        $userDetails['account_id']    = $account_id;
        $userDetails['email']      = $loginDataArray['email'];

        $authStorage->write($userDetails);
}

现在,我如何在会话的后期添加更多数据。以后如何编辑同一个 Zend_Auth 对象。

4

2 回答 2

1

身份验证状态存储在注册的身份验证存储中。默认情况下这是 Zend_Session。你可以通过这个获得会话

$namespace = new Zend_Session_Namespace('Zend_Auth');

然后做这样的事情

$namespace->newname = "newvalue";
于 2013-04-19T07:54:43.220 回答
1

好的,您不要“编辑” Zend_Auth 身份。你要么有身份,要么没有。您可以通过 Zend_Auth 对象设置、读取、写入或清除存储。

然而,我们中的许多人将相同的数据用于各种显示目的,因此通常有效的解决方案是在存储身份时将数据设置为不同的会话名称空间或注册表项,或者只是更新 Zend_Auth 创建为chandresh _cool会话建议。

if ($result->isValid()) {

        $authStorage = $auth->getStorage();

        // the details you wan to store in the session
        $userDetails = array();         

        $userDetails['account_id']    = $account_id;
        $userDetails['email']      = $loginDataArray['email'];
        //add user data to registry
        $user = Zend_Registry::set('user', $userDetails);

        $authStorage->write($userDetails);
}

如果您真的想做自己的事情,您可以通过实现来编写自己的存储适配器,或者您可以通过实现并在适配器中包含存储组件Zend_Auth_Storage_Interface来编写自己的 Auth适配器。Zend_Auth_Adapter_Interface

很多选择,祝你好运。

于 2013-04-20T08:17:08.903 回答