使用Zend-Auth-whitout密码进行身份验证


Authentication using Zend Auth whitout password

我正在开发一个网站,该网站具有linkedin和facebook登录功能,但也具有正常的电子邮件密码登录功能。我已经使用Zend-Auth实现了登录部分,这需要电子邮件和密码。但对于Facebook和LinkedIn部分,我只需要使用API提供的电子邮件登录。有没有一种方法可以在不提供密码的情况下使用Zend Auth登录?我的代码现在是这样的:

$authAdapter->setTableName('users')
    ->setIdentityColumn('email')
    ->setCredentialColumn('password')
->setCredentialTreatment('SHA1(?)');

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

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

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

你可以试试这个方法http://www.kirkaas.com/?p=46或者,在创建帐户时,如果是facebook和公司,您可以将标识列作为密码传递。在登录时,如果是fb登录,你可以很容易地捕捉到它,并且你可以将标识列作为密码传递,登录就会起作用。

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

如果是我,我会创建一个适配器,专门用于您的脸书/领英身份验证,并且只需要一个电子邮件地址。

如果你确保它只会在你进行Facebook/Linkin身份验证时被调用,我认为你会没事的。