use*_*356 6 authentication zend-framework2
我正在使用ZF2开发一个应用程序.我用用户名和密码完成了用户身份验证.但是,我想在身份验证中检查一个额外的列(例如:status).
我已经完成了以下代码.
public function authenticate()
{
$this->authAdapter = new AuthAdapter($this->dbAdapter,
'usertable',
'username',
'password'
);
$this->authAdapter->setIdentity($this->username)
->setCredential($this->password)
->setCredentialTreatment('MD5(?)');
$result = $this->authAdapter->authenticate();
return $result;
}
Run Code Online (Sandbox Code Playgroud)
如何检查身份验证中的列"状态"?注意:状态值应为1.谢谢.
当我使用zf2和doctrine构建我的身份验证时,我创建了授权插件并自定义了此适配器以传递额外的列以进行身份验证.你可能需要继续进行类似的指导.
$adapter = new AuthAdapter($db,
'users',
'username',
'password',
'MD5(?)'
);
// get select object (by reference)
$select = $adapter->getDbSelect();
$select->where('active = "TRUE"');
// authenticate, this ensures that users.active = TRUE
$adapter->authenticate();
Run Code Online (Sandbox Code Playgroud)
更改后,您的代码应该看起来像这样.
public function authenticate()
{
$this->authAdapter = new AuthAdapter($this->dbAdapter,
'usertable',
'username',
'password'
);
$select = $this->authAdapter->getDbSelect();
$select->where('status= "1"');
$this->authAdapter->setIdentity($this->username)
->setCredential($this->password)
->setCredentialTreatment('MD5(?)');
$result = $this->authAdapter->authenticate();
return $result;
}
Run Code Online (Sandbox Code Playgroud)