Я собираюсь начать работу над прототипом для клиента, и одной из необходимых функций является интеграция с внутренней системой аутентификации / регистрации пользователей.
Эта система будет выступать в качестве авторитетной базы данных пользователей и предоставляет RESTful-интерфейс для создания новых пользователей и аутентификации действительных пользователей.
Мне нужно иметь возможность создавать новых пользователей в WP и как часть этого процесса сделать вызов API внешней аутентификации для создания / проверки этого пользователя.
Человек, который является действительным пользователем, но не известен WP, должен иметь возможность войти в систему, чтобы комментировать, без необходимости регистрации на сайте WP самостоятельно.
Человек, вошедший в общий веб-сайт, также должен автоматически войти в WordPress.
Я думаю, что следующий путь.
Для (1) - есть ли регистрационный хук, который я могу использовать?
Для (2) - я предполагаю, что я перехватываю фильтр аутентификации - то есть, когда кто-то пытается войти в систему, я перехватываю это, звоню во внешнюю систему, а затем либо обрабатываю вход в систему WP, либо перенаправляю их в процесс регистрации, где ( 1) берет эр.
Для (3) - прочитайте файл cookie для входа, установленный основным сайтом, и перейдите к (2)?
Думаю, мне также нужно вставить запись в таблицу users и usermeta.
Итак, имеет ли вышесказанное смысл - не думал ли я о чем-то. У любого есть хорошие ресурсы для помощи с этим (@hakre - я видел, что вы проделали некоторую работу над этим !!).
Обновить
Так что я все еще немного ломаю голову над этим, по сути, я пытаюсь подключиться к фильтру аутентификации и использую его для:
- проверьте, установлен ли файл cookie для входа на «основной» сайт, и если это так, выполните повторную проверку по их API аутентификации и, если он действителен, принудительно войдите в WP
wp_signon()
, используя информацию, содержащуюся в файле «cookie» основного сайта (адрес электронной почты и хешированный пароль). в качестве учетных данных для WP - если файл cookie не установлен, перенаправьте на страницу входа на главный сайт и получите логин / регистрацию, затем вернитесь к шагу 1
- если нет пользователя WP, когда существует аутентифицированный пользователь главного сайта, создайте его, а затем создайте «прозрачный» вход (т. е. чтобы пользователь не видел форму входа WP)
По сути, я хочу полностью скрыть форму входа в WP для пользователей, которые будут в основном комментировать, а позже найти способ, позволяющий авторам и администраторам получать к ней доступ напрямую.
Это происходит довольно медленно, вот что я мог бы использовать некоторую помощь:
Правильно ли использовать фильтр аутентификации? Кажется, он вызывается не во всех ситуациях, которые я ожидал - например, мета-виджет отображает ссылки входа / выхода без срабатывания аутентификации
я могу
wp_signon()
вернутьWP_User
объект (что указывает на успешность), но это не влияет на состояние входа в систему - то есть мета-виджет все равно будет отображаться при входе в систему даже после обновления.
Любая помощь с благодарностью получена :)