【问题标题】:Authentication using Zend Auth whitout password使用 Zend Auth 进行身份验证,无需密码
【发布时间】:2013-08-06 18:59:26
【问题描述】:

我正在开发一个网站,该网站具有linkedin 和 facebook 登录功能,以及普通的电子邮件密码登录功能。我已经使用 Zend Auth 实现了登录部分,这需要电子邮件和密码。但是对于 Facebook 和 LinkedIn 部分,我只需要使用 API 提供的电子邮件登录。有没有办法使用 Zend Auth 登录但没有密码?我的代码现在看起来像这样:

$authAdapter->setTableName('users')

    ->setIdentityColumn('email')

    ->setCredentialColumn('password')

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

【问题讨论】:

  • 您是否已经实现了 Facebook 和 LinkedIn 登录部分?所以你只是想存储一个你已经知道在 Zend Auth 中经过身份验证的用户?
  • 这一切都取决于您在没有 Facebook 的情况下如何处理常规登录。 Zend_Auth 很简单。您所要做的就是根据本地用户数据库检查 facebook 电子邮件并将其写入 zend auth 存储。 $auth->getStorage()->write($user);我可以给你发这个代码。

标签: php zend-framework authentication


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我已经尝试过该解决方案,但它似乎不起作用。我不想检查它是 fb 还是linkedin,因为我可能还想稍后添加 twitter 或 google+。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 2019-02-24
      • 1970-01-01
      相关资源
      最近更新 更多