使用Drupal中的外部身份库验证注册数据

时间:2009-11-02 19:23:43

标签: drupal

当我的用户尝试注册时,我想通过检查外部身份存储库(例如,调用Web服务或查找目录服务器)来确保其信息有效。

任何现有模块都可以吗?如果没有,开发此功能的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

我不知道现有模块允许添加自定义验证,但使用hook_user()的'validate'操作实现此功能相当容易:

function yourModule_user($op, &$edit, &$account, $category = NULL) {
  // Are we in the validation phase of a new user registration?
  if ('validate' == $op && 'user_register' == $edit['form_id'] && 'account' == $category) {
    // Yes, do custom validation...
    // NOTE: Just an example to validate by email.
    // Check the other elements in $edit array (e.g. 'name') for more options
    $mail_is_valid = yourModule_custom_mail_validation($edit['mail']);
    // Is the mail address OK?
    if (!$mail_is_valid) {
      // No, set error on mail form field
      form_set_error('mail', t('your custom error message'));
    }
  }
}

只要yourModule_custom_mail_validation()未返回TRUE,这将停止注册过程并重新显示注册表单和邮件字段上的错误消息。

如果您希望现有用户也可以对其帐户进行验证,则可以删除

 && 'user_register' == $edit['form_id']

部分来自第一个if子句 - 然后代码将针对每个用户编辑表单提交运行,而不仅仅是在注册时。

答案 1 :(得分:1)

如果您使用LDAP服务器进行身份验证,则可以使用LDAP module。检查一下。

要使用其他一些Web服务进行身份验证,您必须编写一个模块并实现hook_user,尤其是“登录”案例。如果在登录时,用户的凭据与您的Web服务中的凭据不匹配,则可以将其注销并显示消息。