it-swarm.dev

Integration von WordPress in meine Website unter Beibehaltung meines eigenen Authentifizierungssystems

Ich habe WordPress kürzlich in meine Website integriert und habe versucht, den richtigen Weg zu finden, um das Authentifizierungssystem von Wordpress durch das auf meiner Website zu ersetzen.

Meine Website verfügt bereits über eine Benutzerdatenbank und der Benutzer wird über PHP Sitzungen authentifiziert.

Mein Ziel ist es einfach, das integrierte Registrierungs-/Anmeldeformular von WordPress zu entfernen und es so zu gestalten, dass Benutzer, die bereits auf meiner Website angemeldet sind, über session_start() (und die Berechtigungsprüfung) auf Wordpress-Funktionen zugreifen können. Ich würde nicht die Benutzerdatenbank von Wordpress verwenden.

Die meisten Informationen, die ich zu diesem Thema gefunden habe, beziehen sich auf die Integration einer externen Datenbank in Wordpress, z. B. das Plugin External Database Authentication Reloaded , aber nur sehr wenige auf die Änderung der Art und Weise, wie WordPress überprüft, ob der Benutzer angemeldet ist, bevor ihm Zugriff gewährt wird .

Ich möchte richtig verstehen, wie ich Benutzern, die auf meiner Website angemeldet sind, die gleichen Berechtigungen gewähren kann, als wären sie auch in meinem WordPress angemeldet (indem ich prüfe, ob $_SESSION['simple_auth'] == true)

Ich verstehe, dass diese Frage bereits gestellt wurde. Ich habe einige Nachforschungen angestellt, suche aber hauptsächlich nach Ratschlägen (oder warum ich das nicht tun sollte) und nach Richtlinien, die mir helfen könnten.

3
apatik

Ist die Verwendung von Auth0 ( http://www.auth0.com ) möglicherweise eine Option für Sie? Sie haben ein sehr gutes Wordpress-Plugin.

Ich denke, Sie könnten Ihr System integrieren und mit dem Plugin ein Single Sign On (SSO) durchführen.

Ich denke, es ist eine bessere Option für Sie, einige Dinge in Ihr System zu integrieren (da Sie das System kennen und wahrscheinlich produktiver sein können), indem Sie dieses https://auth0.com/docs/oauth-web-protocol verwenden und lass das Plugin alles in Wordpress erledigen.

1
fsenna

Das Authentifizierungssystem von WordPress besteht aus steckbaren Funktionen , was bedeutet, dass Sie ein Plugin mit der Funktion wp_authenticate() schreiben können und Ihre Site Ihre wp_authenticate() anstelle der nativen Funktion verwendet WordPress eins.

Ihr Kommentar zu is_user_logged_in() (in Ihrem ursprünglichen Beitrag) wird durch die Tatsache verhindert, dass is_user_logged_in() die steckbare wp_get_current_user() aufruft. Dies bedeutet, dass Sie auf diese Weise Ihre eigene wp_get_current_user() schreiben und is_user_logged_in() steuern können.

Sie sollten also in der Lage sein, ein Authentifizierungssystem für WordPress zu schreiben, das Ihre bereits vorhandene Benutzerdatenbank verwendet.

Verweise

1
Pat J

Hier ist ein Beispiel für ein Authentifizierungs-Plugin. Es ruft Informationen aus Ihren PHP-Sitzungsvariablen ab. So verwenden Sie es:

  1. speichere es in einer Datei mycustom-auth.php
  2. ändern Sie die Konstanten am oberen Rand der Klasse
  3. stelle es in wp-content/plugins/mycustom_auth oder wp-content/mu-plugins
  4. aktiviere es in wp-admin
  5. abmelden von WP und erneut anmelden. Sie sollten eine zusätzliche Zeile im Anmeldeformular WP sehen, um zu Ihrem benutzerdefinierten Authentifikator zu gelangen. Klicken Sie darauf und kehren Sie dann zu WP zurück, um festzustellen, ob Sie angemeldet sind
 
/* 
 Name des Plugins: mycustom Authenticator 
 Beschreibung: Authentifiziert gegen einen benutzerdefinierten Authenticator, der PHP-Sitzungen verwendet 
 Version: 1.0 
 */
 
 
 new mycustom_auth (); 
 class mycustom_auth {
 const AUTH_URL = 'http://domain.com/mylogin.php '; // benutzerdefinierte Auth-URL 
 const USERNAME = "Benutzername"; // PHP-Sitzungsvariable für Benutzername 
 const EMAIL = "email"; // PHP-Sitzungsvariable für E-Mail-Adresse 
 const FIRSTNAME = "first"; // PHP-Sitzungsvariable für Vorname - optional 
 const LASTNAME = "last"; // PHP-Sitzungsvariable für Nachname - optionale Funktion 
 
 mycustom_auth () {
 add_filter ('authenticate', Array ($ this, 'authenticate'), 20, 3); 
 add_action ('login_form', array ($ this, 'login_form'); 
 add_action ('login_head', array ($ this, 'login_head'); 
 
 // remove_filter ('authenticate', 'wp_authenticate_username_password', 20, 3); 
} 
 
 function authenticate ($ user, $ username, $ password) { 
 if (is_a ($ user, 'WP_User')) {
 return $ user; 
} 
 $ uid = $ _SESSION [mycustom_auth :: USERNAME]; 
 $ email = $ _SESSION [mycustom_auth :: EMAIL]; 
 $ firstname = $ _SESSION [mycustom_auth :: FIRSTNAME]; 
 $ lastname = $ _SESSION [mycustom_auth :: LASTNAME] ; 
 if (! isset ($ _ SESSION [mycustom_auth :: USERNAME]) || empty ($ uid)) {
 liefert einen neuen WP_Error ('invalid_username', __ (' Custom Login Error : PHP-Sitzung nicht gesetzt. ')); 
} 
 $ user = get_user_by (' login ', $ uid); // könnte stattdessen über die E-Mail-Adresse abgerufen werden 
 if (! $ user) {
 $ user = $ this-> create_user ($ uid, $ email, $ firstname, $ lastname); 
 if (! $ user) {
 return new WP_Error ('invalid_username', __ (' Benutzerdefinierter Anmeldefehler : Sie sind derzeit kein registrierter Benutzer für diese Site.')); 
} 
} 
 neuen WP_User zurückgeben ($ user-> ID); 
} 
 
 Funktion create_user ($ username, $ email, $ firstname, $ lastname) {
 if (leer ($ username) || leer ($ email)) return null; 
 $ user_id = wp_insert_user (array ('user_login' => $ username, 
 'user_email' => $ email, 'first_name' => $ firstname, 'last_name' => $ lastname)); 
 $ user = new WP_User ($ user_id); 
 $ user-> set_role (mycustom_auth :: DEFAULT_ROLE); 
 return $ user; 
} 
 
 function login_form () {
 echo ' '. __ ('Login mit Benutzerdefiniert', 'custom_login'). ''; 
} 
 
 Funktion login_head () {
 // hier benutzerdefiniertes Styling einfügen 
} 
} 
 
 
?> 
0
user42826