WordPress-Benutzerauthentifizierungsprozess

Lesezeit: 3 Minuten

Benutzer-Avatar
Asch

Ich baue ein WordPress-System, in dem ich Benutzer aus einer externen Quelle anstelle von WordPress DB authentifizieren möchte. Ich verwende den wsdl-Dienst, um mit der externen Datenbank zu kommunizieren, und erhalte die richtigen Benutzerinformationen basierend auf ihren Anmeldeinformationen. Allerdings komme ich nicht weiter mit dem erhaltenen Ergebnis weiter. Bitte hilf mir jemand.

Im Folgenden sind die Schritte aufgeführt, die ich bisher durchgeführt habe

Benutzerdefinierte Funktion in pluggable.php erstellt und aufgerufen user.php

function wp_authenticate_username_password($user, $username, $password) {
    if ( is_a($user, 'WP_User') ) { return $user; }
    if ( empty($username) || empty($password) ) {
        if ( is_wp_error( $user ) )
            return $user;

        $error = new WP_Error();

        if ( empty($username) )
            $error->add('empty_username', __('<strong>ERROR</strong>: The username field is empty.'));

        if ( empty($password) )
            $error->add('empty_password', __('<strong>ERROR</strong>: The password field is empty.'));

        return $error;
    }

    //$user = get_user_by('login', $username);  /*Replaced it with the below*/

    $user = validate_ep($username,$password);    

    echo "<pre>";
    print_r($user);  /*Produces the result in step 3*/
    echo "</pre>";
    exit;

Benutzerdefinierte Funktion in pluggable.php die mit meiner externen DB kommuniziert

function validate_ep($username, $userpwd) { 
    $wsdl = "my web service path";
    $client = new SoapClient($wsdl); //(Parameter is the wsdl file in which the services are written.
    $newObj = new stdClass;
    $user_name = ucfirst($username);
    $user_pwd = md5($userpwd);
    $display_type="wp";

    try {
        $result = $client->log_process(array(0 => $user_name, 1 => $user_pwd, 2 => $display_type));              
        if ($result==FALSE)
            return FALSE;
        foreach($result->item as $key=>$valObj) {
            if(!is_numeric($valObj->key)) {
                $newObj->{$valObj->key} = $valObj->value;
            }
        }               

        /*$actual = unserialize(base64_decode($result));*/
        if (count($result) > 0) {
            $user = new WP_User;
            $user->init($newObj);
            return $user;
        }
    } catch (SoapFault $exp) {
        //print_r( $exp->getMessage());               
    }
    return false;
}

Das vom Webdienst zurückgegebene Ergebnis

WP_User Object
(
    [data] => stdClass Object
    (
        [id] => ID
        [organization] => ID
        [login] => UserName
        [password] => ***
        [name] => Name

    )

    [ID] => 0
    [caps] => Array
    (
    )

    [cap_key] => wp_capabilities
    [roles] => Array
    (
    )

    [allcaps] => Array
    (
    )

    [filter] => 
)

Jemand bitte helfen, was kann ich nach diesen Schritten tun.

Benutzer-Avatar
Dharmang

Ich würde vorschlagen, die WordPress-Kerndateien nicht zu ändern, wie Sie es für getan haben user.php da es überschrieben wird, sobald der WordPress-Kern aktualisiert wird. Stattdessen würde ich vorschlagen, den folgenden Artikel durchzugehen:

WordPress Ersetzen Sie die integrierte Benutzerauthentifizierung

Es hat auch eine Erklärung in der Videopräsentation.

Ich füge nur eine Zusammenfassung unten hinzu:

Was Sie beim Austausch der eingebauten Authentifizierung beachten sollten

WordPress verlässt sich stark auf sein eingebautes Benutzersystem. Aus diesem Grund werden viele Verweise auf Benutzer in der WordPress-Datenbank erstellt. Obwohl es etwas lästig ist, ist es immer noch ziemlich einfach, diese Einschränkungen zu umgehen.

WordPress erfordert, dass ein echter Benutzer (WordPress-Benutzer) in der WordPress-Datenbank vorhanden ist, um Operationen für diesen Benutzer auszuführen. Glücklicherweise enthält WordPress Funktionen zum Erstellen, Bearbeiten und Löschen von Benutzern. Wenn wir also unseren Dienst aufbauen, werden wir tatsächlich die folgenden Schritte unternehmen, die ziemlich unabhängig vom Authentifizierungstyp sein sollten:

  • Authentifizieren Sie den Benutzer über eine alternative Methode
    • Bei ungültigem Benutzer wird eine ungültige Anmeldenachricht angezeigt
    • Wenn gültiger Benutzer
      • Überprüfen Sie, ob der Benutzer in der WordPress-Benutzertabelle vorhanden ist
      • Wenn der Benutzer vorhanden ist, werden Benutzerdaten in einem WP_User-Objekt geladen und zurückgegeben
      • Wenn der Benutzer nicht existiert
        • Erstellen Sie automatisch einen neuen Benutzer aus den Benutzerinformationen des alternativen Authentifizierungsdienstes
        • Nach dem Erstellen des Benutzers werden Benutzerdaten in einem WP_User-Objekt geladen und zurückgegeben

  • Es lohnt sich, diesen Link zu besuchen, nur um den coolen VW-Bus im Blog-Header zu sehen 🙂

    – Kirby

    15. Mai 2015 um 17:42 Uhr

1382670cookie-checkWordPress-Benutzerauthentifizierungsprozess

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy