唤醒时的zend_auth身份

时间:2012-04-05 12:19:13

标签: php zend-framework zend-auth

我有一个代表我的身份的类,其中包含一些信息。这是简短的版本。

class Auth_User {

    private $id;
    private $current_role;

    public function __construct($id, $current_role) {
        $this->id = (int) $id;
        $this->current_role = (string) $current_role;
    }

    public function __wakeup() {
        if ( /*$current_role is not valid*/ ) {
            /*clear identity and redirect to login*/
        {
    }
}

我的问题如何在wakeup方法中安全地清除身份并重定向登录? 如果我执行以下操作,它似乎在无限循环中运行。

Zend_Auth::getInstance()->clearIdentity();
$this->_helper->redirector('index', 'index');

1 个答案:

答案 0 :(得分:0)

您使用__wakeup()方法意味着您拥有__sleep()方法。

在这种情况下,我可能会考虑做的是在Zend_Session_Namespace('Zend_Auth')方法中设置__sleep()的到期日。

然后针对__isset()方法中的命名空间测试__wakeup()。我认为这种方法可能有用。

如果您只想清除__sleep()处的身份,这也许是一个好主意,然后只需重定向到login()上的__wakeup()

希望我不完全处于左翼......