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.
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.
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