Zend中的身份验证失败以进行帐户确认

时间:2013-02-13 11:57:36

标签: zend-framework

我遇到了这个问题。在我的zend应用程序中验证登录凭据时,我还想检查帐户是否已经确认。 Confirmed是我帐户表中的布尔列,默认设置为False。我试图通过以下代码实现这一点..但它无法正常工作

    $db = Zend_Db_Table::getDefaultAdapter();
    $authAdapter = new Zend_Auth_Adapter_DbTable($db);
    $authAdapter->setTableName('Account');
    $authAdapter->setIdentityColumn('Email');
    $authAdapter->setCredentialColumn('Password');
    $authAdapter->setCredentialTreatment('Confirmed = 1');
    $authAdapter->setIdentity($data['email']);
    $authAdapter->setCredential($data['password']);
    $auth = Zend_Auth::getInstance();
    $result = $auth->authenticate($authAdapter);

    if ($result->isValid()) {
        if ($data['public'] == "1") {
            Zend_Session::rememberMe(Zend_Registry::getInstance()->constants->sessiontime);
        } else {
            Zend_Session::forgetMe();
        }
        return TRUE;
    } else {
        return FALSE;
    }

尽管帐户未确认身份验证通过。请告诉我我哪里错了

1 个答案:

答案 0 :(得分:1)

凭证处理参数指定应如何检查密码。您可以覆盖它以添加其他子句,但仍需要包含密码位。我真的不希望你的方法对任何用户进行身份验证,所以这可能不是主要问题,但请尝试:

$authAdapter->setCredentialTreatment('MD5(?) AND Confirmed = 1');

更改MD5位,但密码已加密。这应该生成一个查询:

... WHERE Email = 'xxx' AND Password = MD5(?) AND Confirmed = 1