Drupal中外部身份验证后的透明用户注册

时间:2010-06-21 19:41:13

标签: drupal drupal-6 drupal-modules

我正在研究Drupal 6模块,以提供基于OAuth的用户身份验证和注册。我已经使用OAuth模块进行身份验证,如http://oauth.net/core/1.0a/#anchor9所述。下一步是使用服务提供商的自定义API使用身份验证后提供的信息创建用户帐户。

根据http://drupal.org/node/497612#comment-3047302,我不应该使用user_external_login_register(),但请参阅OpenID模块,了解如何正确登录外部用户。

在研究OpenID模块之后,我打算这样做:

  • 尝试使用user_external_load()从自定义API结果加载authname版本的现有用户。
  • 如果用户存在,请使用user_external_login()将用户登录。
  • 如果没有,假装已经提交了注册表(如openid_authentication()那样)来创建新的用户帐户。如果需要任何其他信息以便用户注册,则重定向到预填表格。

这是正确的方法吗?除了OpenID之外,还有另一个值得关注的模块吗?

1 个答案:

答案 0 :(得分:0)

您可以查看以前的Drupal模块。那个模块做了两件完全不同的事情(对于架构来说很有道理:))。  *它向中央“谁运行Drupal”目录创建信息。 (并提供了一个页面来自己显示这样的目录!)  *它允许使用其他Drupal站点的凭据登录。

后者就是你要找的。请注意,该模块已停止使用,不是因为登录方法错误,而是因为DrupalID机制本身存在缺陷。它已被openID和oauth取代。

http://drupalcode.org/viewvc/drupal/drupal/modules/drupal/drupal.module?hideattic=0&view=markup

您要查找的钩子和方法(按此顺序)是:

  • drupal_form_alter - 将验证回调添加到登录表单 s
  • drupal_form_user_login_alter - 在登录表单上添加有关替代登录的信息。
  • drupal_distributed_validate - 验证回调:调用drupal_auth以查看用户是否有效。如果是,请调用user_external_login_register
  • drupal_auth - 验证回调的帮助程序:确定凭据是否有效。

所有其他函数都是这些函数的辅助函数,或提供该目录功能,或允许远程站点对我们的数据库进行身份验证。你将不会使用它们。