我正在使用zend 2身份驗證。現在有一種情況,用戶可以用用戶名和密碼或電子郵件和密碼登錄。是否有可能在zend 2中同時提供用戶名和電子郵件身份。否則,我該如何管理這種情況?Zend 2身份驗證:管理2身份
這是我目前的工作代碼。這裏使用電子郵件作爲身份和密碼作爲憑證。
在Module.php
public function getServiceConfig()
{
return array(
'factories' => array(
'AuthService' => function($sm) {
$dbTableAuthAdapter = new DbTableAuthAdapter(
$sm->get('Zend\Db\Adapter\Adapter'),
'users',
'email',
'password'
);
$authService = new AuthenticationService();
$authService->setAdapter($dbTableAuthAdapter);
return $authService;
},
)
);
}
和控制器,
$this->getAuthService()->getAdapter()->setIdentity($oRequest->getPost('username'))->setCredential(md5($oRequest->getPost('password')));
$select = $this->getAuthService()->getAdapter()->getDbSelect();
$select->where('is_active = 1');
$oResult = $this->getAuthService()->authenticate();
// Authentication ends here
if ($oResult->isValid()) {
// code after authentication
}
任何想法?謝謝。
這肯定會需要一個自定義的認證適配器類,可能延長'的Zend \認證\適配器\ DBTABLE \ AbstractAdapter'。您可以修改「標識列」爲有效列名稱的數組,並在'authenticateCreateSelect'中構建選擇查詢時使用這些列名。 – AlexP