Авторизация в WordPress с использованием данных из внешней базы данных

23 мая 2012 г., 23:05:21
Просмотры: 15.7K
Голосов: 3

У меня есть сайт на WordPress и внешняя база данных (не из WordPress) с пользователями. Процесс добавления записей в эту таблицу использует тот же алгоритм, что и WordPress. Мне нужно реализовать вход в WordPress, но с проверкой данных из этой внешней базы, которая, кстати, находится на том же хосте. Я изучил эти ссылки http://www.tyssendesign.com.au/articles/cms/connecting-to-external-database-from-within-wordpress/ и http://wordpress.org/extend/plugins/external-database-authentication/, но первый вариант не подходит, а второй не совместим с WordPress 3+, а я использую версию 3.3.1. Есть ли какие-то предложения, документация или другие решения?

0
Все ответы на вопрос 5
3

Вы можете переопределить основную функцию wp_authenticate.

Для этого необходимо создать собственный плагин и объявить новую версию wp_authenticate. Функция принимает имя пользователя и пароль, а возвращает объект WP $user.

wp_authenticate является "подключаемой" функцией (pluggable) и находится в файле wp-includes/pluggable.php.

23 мая 2012 г. 23:30:46
Комментарии

Будет ли эта функция работать в файле functions.php моей темы? И как подключиться к внешней базе данных для проверки имени пользователя и пароля?

ReynierPM ReynierPM
23 мая 2012 г. 23:38:06

Функция должна находиться в плагине, она не будет работать в functions.php (это связано с тем, как подключаемые функции загружаются в WordPress).

Roscius Roscius
24 мая 2012 г. 16:23:33

Вы можете использовать PHP-функции mysql/mysqli для подключения к базе данных и проверки имени пользователя и пароля. Подключение к БД будет стандартным для PHP. Однако важно понимать процессы хеширования и солирования паролей, чтобы обеспечить лучшие практики хранения паролей.

Roscius Roscius
24 мая 2012 г. 16:26:59
0

Мне нужно было больше возможностей, чем я мог найти в других решениях, поэтому я написал собственный плагин — External Login.

Основные функции плагина:

  • Сопоставление структуры сторонней таблицы базы данных с полями WordPress
  • Поддержка различных методов хеширования из внешней базы данных (bcrypt, MD 2 4 и 5, SHA 256 384 и 512, и многие другие)
  • Возможность использования различных методов соления
  • Создание копии пользователя в базе данных WordPress для работы с стандартными функциями WordPress, такими как роли и права
  • Сопоставление ролей из внешней базы данных с ролями WordPress (например, студент во внешней базе становится редактором в WordPress)

Дайте знать, если вам нужна дополнительная функциональность :)

https://en-gb.wordpress.org/plugins/external-login/

7 февр. 2018 г. 22:45:09
1

Вы пробовали плагин External Database Authentication? Тот факт, что он давно не обновлялся, не обязательно означает, что он не будет работать. Как минимум, вы можете изучить его исходный код, чтобы понять, как реализована функциональность, и использовать это в качестве основы для своей задачи.

Вот код: http://plugins.trac.wordpress.org/browser/external-database-authentication/trunk/ext_db_auth.php

23 мая 2012 г. 23:13:09
Комментарии

Да, я вижу этот плагин, но он немного сложный, так как я не эксперт по WordPress и многие вещи для меня новые

ReynierPM ReynierPM
23 мая 2012 г. 23:37:02
1

Я только что обновил этот старый плагин под свои нужды. Обновленную версию можно найти @ http://www.7mediaws.org/extend/plugins/external-db-auth-reloaded

5 нояб. 2012 г. 02:55:55
Комментарии

страница не найдена :/

PayteR PayteR
27 сент. 2017 г. 00:46:37
0

Да, ваш плагин просто отличный. Единственное, что нужно доработать и завершить, это поддержку двух разных таблиц в новых версиях WordPress, которые содержат данные пользователей. Это таблицы wp_user и wp_usermeta. В плагине же предусмотрена аутентификация только по одной таблице. Если эту функцию исправить, ваш плагин точно станет на 100% успешным.

Ещё есть баг. Поскольку для аутентификации используется только одна таблица, я не могу проверить роли пользователей и синхронизировать их. Это означает, что при включении внешнего входа, когда я выхожу и вхожу снова, у меня назначается роль подписчика, которую я указал на случай, если роли не совпадают. Таким образом, я также теряю права администратора. Пожалуйста, помогите и разберитесь с этим.

30 мая 2019 г. 17:46:01