我有一个代表我的身份的类,其中包含一些信息。这是简短的版本。
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');
答案 0 :(得分:0)
您使用__wakeup()
方法意味着您拥有__sleep()
方法。
在这种情况下,我可能会考虑做的是在Zend_Session_Namespace('Zend_Auth')
方法中设置__sleep()
的到期日。
然后针对__isset()
方法中的命名空间测试__wakeup()
。我认为这种方法可能有用。
如果您只想清除__sleep()
处的身份,这也许是一个好主意,然后只需重定向到login()
上的__wakeup()
。
希望我不完全处于左翼......