我正在使用一个网站,用户可以在该网站上输入两个电子邮件地址(主要和次要)以及密码。
如果用户输入了他的主电子邮件和密码,他就会成功登录。
但是,我想提供的是,如果用户输入他的辅助电子邮件而不是主要电子邮件,即使这样他也会登录。而我遇到的问题是如何创建备用的Doctrine Auth Adapter或类似的东西。< / p>
这是我在module.config.php中所做的:
'doctrine' => array(
'driver' => array(
__NAMESPACE__ . '_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
),
'orm_default' => array(
'drivers' => array(
__NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
)
)
),
'authentication' => array(
'orm_default' => array(
'object_manager' => 'Doctrine\ORM\EntityManager',
'identity_class' => 'User\Entity\LoginDetails',
'identity_property' => 'primary_email',
'credential_property' => 'password',
),
),
)
Is there any option to add an identity property which will be alternative ?
I am using Zend framework 2 and Doctrine 2
答案 0 :(得分:3)
是否有任何选项可以添加一个可替代的身份属性?
不,DoctrineModule没有内置的选项。
考虑扩展DoctrineModule \ Authentication \ Adapter \ ObjectRepository以覆盖authenticate()方法。
然后,至少,您需要使用新的更新的适配器替换默认适配器。如果你看看DoctrineModule中的各个工厂,你应该有一个良好的开端。
基本上,您的某个模块将要覆盖ServiceManager中的doctrine.authenticationadapter.[orm|odm]_default
配置密钥。这将导致DoctrineModule将扩展的ObjectRepository注入AuthenticationService而不是默认的。