Wie melde ich WordPress-Benutzer ohne Passwort an?

Lesezeit: 4 Minuten

Benutzeravatar von Ninja Boy
Ninja-Junge

Ich möchte WordPress-Benutzer ohne Passwort anmelden. Das ist was ich will. Sagen Sie Benutzerbesuche http://example-site.com/6789098765678.php und auf der Seite, auf der er seinen Benutzernamen eingibt, wird er automatisch ohne Passwort eingeloggt.

Ich habe einige Dinge ausprobiert, z wp_set_auth_cookie und alles, aber ich weiß nicht, wo ich es hinstellen soll. Ich habe einen Ruby on Rails-Hintergrund und habe nur sehr geringe Kenntnisse über PHP.

Ich weiß, dass dieses Verhalten nicht sicher ist. Es ist ein spezifischer Anwendungsfall.

  • Standardmäßig bietet WordPress keine Art von Funktionalität, die Sie suchen. Der beste Weg, dies zu ermöglichen, sollte darin bestehen, Ihr eigenes Plugin zu erstellen und das Plugin mit der Benutzertabelle zu verbinden und dann Ihre benutzerdefinierten Anmeldeformulare nur mit dem Benutzernamen zu erstellen. Speichern Sie das ursprüngliche Passwort der Benutzer in usermeta (nicht das gesalzene und gehashte) und geben Sie dann den Benutzernamen ein, um sich anzumelden. Rufen Sie das Passwort von Usermeta basierend auf dem Benutzernamen ab und senden Sie dieses Passwort und diesen Benutzernamen dann an die WordPress-Anmeldefunktion, die den Benutzer anmeldet und die Sitzung einrichtet.

    – Arsh Singh

    6. Juli 2016 um 14:30 Uhr

  • @ArshSingh Wie ist das dann möglich? wordpress.stackexchange.com/questions/53503/…

    – Ninja-Junge

    6. Juli 2016 um 14:39 Uhr


  • Wenn Sie das verwenden möchten – haben Sie dies überprüft wordpress.stackexchange.com/a/128445/66430

    – Arsh Singh

    6. Juli 2016 um 14:43 Uhr


  • Nur neugierig, da sich jeder als jeder anmelden kann, was ist der Wert eines Benutzernamens?

    – Damien

    6. Juli 2016 um 15:35 Uhr

  • @DamienSugden Ich habe eine Backend-Lösung zum Authentifizieren von Benutzern. Anstelle des Passworts möchte ich es verwenden.

    – Ninja-Junge

    7. Juli 2016 um 2:28 Uhr

Die Antwort, die ich in den Kommentaren gepostet habe, können Sie auf folgende Weise verwenden.

Was Sie brauchen, um dies zu ermöglichen, ist. Erstellen ajax hooks für die WordPress-Funktion, die wir für die Benutzeranmeldung nur mit Benutzername verwenden werden, und jQuery-Ajax-Aufruf für diese Funktion.

Der erste Schritt, den Sie hier tun müssen, ist: wp-content/themes/your_theme_name/ Und öffnen Sie die Datei mit dem Namen functions.php dann fügen Sie am Ende der Datei den folgenden Code hinzu.

function username_login(){
// Automatic login //
$username = $_POST['username'];
$user = get_user_by('login', $username );



 // Redirect URL //
    if ( !is_wp_error( $user ) )
    {
        wp_clear_auth_cookie();
        wp_set_current_user ( $user->ID );
        wp_set_auth_cookie  ( $user->ID );

        $redirect_to = user_admin_url();
        echo json_encode(array('error_code'=>0));
        exit();
    } else {
        echo json_encode(array('error_code'=>1));
        exit();
    }
 exit();
}
add_action('wp_ajax_username_login','username_login');
add_action('wp_ajax_nopriv_username_login','username_login');

Wie Sie sehen können, haben wir a verwendet add_action Funktion zum Anschließen an unsere username_login Funktion aus dem Ajax-Controller, lesen Sie mehr über WordPress hakt hier

Der nächste Schritt, den wir hier benötigen, besteht darin, einen Ajax-Aufruf an die von uns erstellte Funktion zu tätigen und die Benutzeranmeldung vorzunehmen und dann die Website zu aktualisieren, wenn der Benutzer angemeldet ist. Was Sie benötigen, ist die Verwendung des folgenden Codes, um die Anmeldeanforderung an WordPress zu senden der Benutzer. Fügen Sie den folgenden Code zu Ihrer Datei footer.php hinzu, die sich darin befindet wp-content/themes/your_theme_name/ und offen footer.php :

jQuery('#username_login').on('submit',function(e){
    e.preventDefault();
    var data = $(this).serializeArray();
    data.push({ name:'action',value:'username_login' });
    $.ajax({
        url:"<?php echo admin_url('admin-ajax.php'); ?>";,
        type: 'POST',
        dataType: 'json',
        data:data,
        success:function(response){
            if(response.error_code == 1){
                alert('user cannot login')
            } else {
                alert('user logged in');
                location.reload();
            }
        }
    });
});

Wie Sie im obigen Javascript-Code sehen können, haben wir den Formularselektor aufgerufen username_login was wir jetzt tun müssen, ist ein Formularelement mit der ID zu erstellen username_login und darin müssen wir eine Eingabe namens erstellen username mit Knopftyp submit :

<form id="username_login">
    <input type="text" name="username" placeholder="Your username..." required/>
    <button type="submit" name="submit">Login</button>
</form> 

Nun, da Sie alle haben, wie wird das mit diesem Fluss funktionieren? . Nun, wenn der Benutzer den Benutzernamen eingibt und auf Login klickt, wird eine Ajax-Anforderung an die URL gesendet: yoursite.com/wp-admin/admin-ajax.php?action=username_login mit dem aufgerufenen Parameter action und wenn sich der Benutzer anmeldet, wird die Website aktualisiert, während der Benutzer angemeldet ist, und der Benutzer hat dann problemlos Zugriff auf die Funktionen des normalen Benutzers.

  • Vielen Dank für die Zeit, die Sie sich genommen haben, um meine Frage zu beantworten. Während dies ein Ansatz ist, ist ein einfacher Ansatz, einfach den Code hier einzufügen: wordpress.stackexchange.com/questions/53503/… in einer PHP-Datei und Hinzufügen der Zeile require( dirname(__FILE__) . '/wp-load.php' ); in die Datei am Anfang. Es ist eine einfache Problemumgehung 😀

    – Ninja-Junge

    7. Juli 2016 um 9:40 Uhr


  • Zustimmen und akzeptieren, da dies eine Möglichkeit ist, die Arbeit zu erledigen. Aber ich habe die Problemumgehung verwendet, die ich zuvor angegeben habe.

    – Ninja-Junge

    7. Juli 2016 um 9:42 Uhr

  • Ihre Problemumgehung ist auch gut, die, die ich gepostet habe, für den Fall, dass Sie etwas Dynamischeres und auf Javascript basierendes erstellen müssen. Sie können auf diese Weise machen.

    – Arsh Singh

    7. Juli 2016 um 9:43 Uhr

1446710cookie-checkWie melde ich WordPress-Benutzer ohne Passwort an?

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

Privacy policy