Как пройти аутентификацию против Django из Drupal? - PullRequest
3 голосов
/ 18 февраля 2011

У меня работает сайт Drupal 6 среднего размера (около 5 миллионов просмотров страниц в месяц и более 30 000 зарегистрированных пользователей), и мне нужно интегрировать с ним OSQA, приложение Django.У меня уже есть много пользователей, ролей и разрешений в моей базе данных Drupal, и я хотел бы указать приложению Django на использование страниц регистрации и входа, которые у меня уже есть в Drupal, чтобы дать моим пользователям единую точку входа.

Я хочу сохранить часть аутентификации Django, потому что я думаю, что OSQA будет работать лучше.Я также имею в виду соображения производительности, сайт Drupal уже получает большой трафик и имеет очень загруженную базу данных, и я думаю, что использование отдельной базы данных для Django поможет.

После некоторых исследований я думаю, что смогу сделатьстраницы регистрации и входа в Drupal вызывают Django в фоновом режиме, чтобы зарегистрироваться или войти в приложение Django.Я планирую сделать это, написав пару представлений в Django, одно для регистрации и другое для входа в систему, и Drupal опубликует имя пользователя и пароль для этих представлений.Конечно, мне нужно отключить CSRF в Django для этих представлений и, возможно, также опубликовать какой-нибудь секретный ключ, о котором знают только мои приложения Drupal и Django, чтобы избежать внешних сайтов, пытающихся использовать эти «незащищенные» представления Django.

Я знаю, что моему приложению Django могут понадобиться некоторые пользовательские данные из Drupal в некоторые моменты, и я планирую использовать для этого сервисный модуль Drupal.

Это будет хороший подход?Есть предложения?

Большое спасибо!

Ответы [ 3 ]

0 голосов
/ 18 февраля 2011

Однажды я создал очень простой модуль [sql_authentication] [1], который вы, вероятно, можете просто пересоздать для более новой версии Drupal.

Идея проста: предоставить Drupal альтернативный обратный вызов аутентификации. В этой функции обратного вызова просто проверьте базу данных Django и верните TRUE, если считаете, что пользователь прав.

Вы можете посмотреть, как openid.module (в основном) расширяет аутентификацию пользователя для простого примера.

0 голосов
/ 19 февраля 2011

Если вы можете отправлять сообщения в форму Django, вы можете использовать drupal_http_request для обработки вызова Django.После использования модуля ldap_integration некоторое время я работал над пользовательским модулем аутентификации, который вызывает API-интерфейс аутентификации REST на основе Java с использованием drupal_http_request.Если вы заинтересованы в коде, дайте мне знать.

0 голосов
/ 18 февраля 2011

Существуют ли плагины для OSQA для предоставления сервиса аутентификации, с которым может общаться Drupal? (OpenID или аналогичный).

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

Наконец, почему бы просто не создать основные части функциональности OSQA с помощью Drupal? Похоже, что ключевые функции могут быть легко воспроизведены с помощью таксономии, голосования и пользовательских точек / пользовательских значков ... потенциально легче сделать, чем общая аутентификация, особенно на большом сайте.

...