使用Zend Auth进行身份验证,无需密码

时间:2013-08-06 18:59:26

标签: php zend-framework authentication

我正在开设一个网站,其中包含linkedin和facebook登录,但也有正常的电子邮件密码登录。我使用Zend Auth实现了登录部分,需要电子邮件和密码。但对于Facebook和LinkedIn部分,我只需要使用API​​提供的电子邮件进行登录。有没有办法使用Zend Auth登录但没有提供密码?我的代码目前看起来像这样:

$authAdapter->setTableName('users')

    ->setIdentityColumn('email')

    ->setCredentialColumn('password')

->setCredentialTreatment('SHA1(?)');

3 个答案:

答案 0 :(得分:1)

当我需要登录使用Oauth2从社交网络登录的用户并且不向服务器发送电子邮件时,我有相同的任务我自己生成密码并通过ID登录。

    $authAdapter->setTableName('users')
                ->setIdentityColumn('facebook_id')
                ->setCredentialColumn('pass')
                ->setIdentity($id)
                ->setCredential($pass);

答案 1 :(得分:0)

我认为使用默认的Zend_Auth类是不可能的。

您可以尝试这种方式http://www.kirkaas.com/?p=46,或者您可以在facebook和co的情况下将身份列作为密码传递。在创建帐户时。在登录时,如果它是fb登录,您可以轻松捕获它,并且您可以将标识列作为密码传递,登录将起作用。

答案 2 :(得分:0)

公平地说,我认为您最好创建自己的身份验证适配器,而不是滥用已存在的身份验证适配器。

如果是我,我会创建一个专门用于Facebook / LinkedIn身份验证的适配器,只需要一个电子邮件地址。

如果你确定只有在你进行Facebook / LinkedIn身份验证时才会调用它,我认为你会没事的。