Zend \ Authentication是否提供了检查身份是否存在的方法?

时间:2014-04-10 17:13:29

标签: php authentication zend-framework2

它足够简单,可以使用Zend \ Authentication对数据库进行身份验证:

$isAuthenticated = $this->getAuthService($db)->getAdapter()
    ->setIdentity($this->request->getPost('username'))
    ->setCredential($this->request->getPost('password'))
    ->authenticate()
    ->isValid()
    ;

但是,如果验证成功,这只会返回一个布尔值。 Zend \ Authentication是否提供了一种方法来检查数据库中是否存在标识并返回此信息?我可以先做一个sql查询,看看它是否在数据库中,但在我这样做之前,我想确定没有一个盒子解决方案为这个类提供。

这样我可能会出现“密码不正确,请再试一次”消息与“用户帐户不存在”。或者我可以说,不显示此信息是一项安全功能而不是麻烦:P

1 个答案:

答案 0 :(得分:1)

是的,你有代码。你可以这样使用:

// inside of AuthController / loginAction
$result = $this->auth->authenticate($adapter);

switch ($result->getCode()) {

case Result::FAILURE_IDENTITY_NOT_FOUND:
    /** do stuff for nonexistent identity **/
    break;

case Result::FAILURE_CREDENTIAL_INVALID:
    /** do stuff for invalid credential **/
    break;

case Result::SUCCESS:
    /** do stuff for successful authentication **/
    break;

default:
    /** do stuff for other failure **/
    break;
}

检查Authenticacion文档http://framework.zend.com/manual/2.3/en/modules/zend.authentication.intro.html