it-swarm.com.de

Gibt es einen Haken, bevor der Benutzer authentifiziert wird?

Ich suche nach einem Hook, der verwendet werden kann, bevor WP die Datenbank liest, um die Anmeldeinformationen des Benutzers zu authentifizieren, aber anscheinend keinen findet. Existiert einer?

Ich habe add_filter/action('authenticate', 'customcode', 30, 3) ausprobiert, aber dies scheint zu funktionieren, sobald die wp-login.php-Seite angefordert wird, anstatt nachdem der Benutzer auf login geklickt hat und der Benutzername/das Passwort POST lautet.

2
Ken

Wenn Sie sich den Code für wp-login.phpsowohl den Fall login als auch den Standardfall ansehen, führen Sie wp_signon() aus. Der Grund, so scheint es mir, ist das Verwalten von Fällen, in denen ein Benutzer bereits ein gültiges Cookie für die Site hat. Ich glaube nicht, dass es einen Haken gibt, der nur beim Anmelden ausgelöst wird, aber es ist ziemlich einfach, ihn zu kompensieren. Der erste Hook in diesem Anmeldepfad und vor der Authentifizierung ist der Aktions-Hook wp_authenticate not authenticate (obwohl dies ein gültiger Hook ist).

function customcode($username, $password ) {
  if (!empty($username) && !empty($password)) {
    // your code
  }
}
add_action('wp_authenticate', 'customcode', 30, 2);
2
s_ha_dum

Ah, es stellte sich heraus, dass add_filter/action('authenticate', 'customcode', 30, 3) das war, wonach ich gesucht habe ...

Das Problem war, dass ich die Priorität zu niedrig hatte, sodass alle Antworten, die ich mit meinem benutzerdefinierten Code erstellte, von den anderen Filtern überschrieben wurden.

Wenn ich also global $wp_filter['authenticate'] ablade, sehe ich die folgenden Filter:

20, wp_authenticate_username_password
30, wp_authenticate_cookie
99, wp_authenticate_spam_check

Durch Ändern der Priorität auf 100 (oder höher) könnte ich stattdessen das Überschreiben durchführen und die gewünschte Antwort für die Verarbeitung der Anmeldeinformationen erstellen, die über die Anmeldeseite übermittelt wurden.

1
Ken