Zend_Auth检查用户是否已登录

时间:2009-09-24 08:14:01

标签: php zend-framework zend-auth

我尝试使用:

// do login if request is posted
if (isset($_POST) && !empty($_POST)) {
    // do authencation
    ...
} else {
    // request not posted
    // see if already logged in
    if (Zend_Auth::getInstance()->hasIdentity()) {
        echo "already logged in as: " . Zend_Auth::getInstance()->getIdentity();
    }
}

Zend_Auth::getInstance()->hasIdentity()似乎总是假的......即使在登录后

3 个答案:

答案 0 :(得分:11)

你有没有打电话给Zend_Auth::getInstance()->getStorage()->write($identity)

如果您通过Zend_Auth::getInstance()->authenticate($adapter)进行身份验证,它将为您写入存储,但如果您直接在适配器上调用身份验证,则您有责任将该身份写入存储。

答案 1 :(得分:1)

你确定你的身份是坚持的吗? (即存储在会话中或类似的东西) 如果不是,您将不得不在每个请求上重新进行身份验证

答案 2 :(得分:1)

我有同样的问题, 在我的情况下,session.save_path on的值未在我的服务器上设置(phpinfo()) 所以我在configs/application.ini中添加了这个值:

resources.session.save_path = APPLICATION_PATH "/../data/sessions"

并在我的服务器上创建了/data/sessions,其中sessions拥有777权限