Прозрачная регистрация пользователя после внешней аутентификации в Drupal - PullRequest
0 голосов
/ 21 июня 2010

Я работаю над модулем 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 вот что я планируюсделать:

  • Попробуйте загрузить существующего пользователя для сборки имени пользователя из результата пользовательского API, используя user_external_load().
  • Если пользователь существует, используйтеuser_external_login() для входа в систему пользователя.
  • Если нет, сделайте вид, что форма регистрации была отправлена ​​(как openid_authentication() делает), чтобы создать новую учетную запись пользователя,И перенаправить на предварительно заполненную форму, если какая-либо дополнительная информация необходима для регистрации пользователя.

Это правильный способ сделать это?Есть ли еще один модуль, на который стоит обратить внимание, как это сделать в дополнение к OpenID?

1 Ответ

0 голосов
/ 22 июня 2010

Вы можете взглянуть на бывший модуль Drupal. Этот модуль сделал две совершенно разные вещи (ура для архитектуры :)). * Он передал информацию в центральный каталог "кто управляет Drupal". (и предложил страницу, чтобы показать такой каталог самостоятельно!) * Это позволило войти с учетными данными с других Drupal-сайтов.

Последнее - это то, что вы ищете. Обратите внимание, что модуль был снят с производства не потому, что метод входа в систему был выполнен неправильно, а потому, что сам механизм DrupalID имеет недостатки. Он был заменен на openID и oauth.

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

Крюки и методы, которые вы будете искать (в таком порядке):

  • drupal_form_alter - Добавляет обратный вызов validate в форму входа s .
  • drupal_form_user_login_alter - добавляет информацию об альтернативном входе в форму входа.
  • drupal_distributed_validate - обратный вызов проверки: вызывает drupal_auth, чтобы проверить, действителен ли пользователь. Если это так, вызывает user_external_login_register
  • drupal_auth - помощник для обратного вызова проверки: определяет, действительны ли учетные данные.

Все остальные функции являются либо вспомогательными функциями для них, либо предоставляют эту функцию каталога, либо позволяют удаленным сайтам проходить аутентификацию в нашей базе данных. Ни один из которых вы будете использовать.

...