Există un hook înainte de autentificarea utilizatorului?

8 nov. 2015, 21:34:13
Vizualizări: 16.4K
Voturi: 8

Caut un hook care poate fi folosit înainte ca WordPress să citească baza de date pentru a autentifica datele de conectare ale utilizatorului, dar nu reușesc să găsesc unul. Există?

Am încercat add_filter/action('authenticate', 'customcode', 30, 3), dar acesta pare să se execute imediat ce pagina wp-login.php este solicitată, nu după ce utilizatorul apasă pe butonul de login și username/parola sunt trimise prin POST.

0
Toate răspunsurile la întrebare 2
1

Dacă te uiți la codul din wp-login.php atât cazul login cât și cel implicit rulează wp_signon(). Motivul, după cum mi se pare, este gestionarea cazurilor în care un utilizator are deja un cookie valid pentru site. Deci, nu cred că există un hook care să se declanșeze doar la autentificare, dar este destul de ușor să compensăm acest lucru. Primul hook de-a lungul căii de autentificare și înainte de autentificare este hook-ul de acțiune wp_authenticate, nu authenticate (deși acesta este un hook valid).

function customcode($username, $password ) {
  if (!empty($username) && !empty($password)) {
    // codul tău
  }
}
add_action('wp_authenticate', 'customcode', 30, 2);
8 nov. 2015 23:11:34
Comentarii

Mulțumesc. Acest lucru funcționează într-un fel, dar orice răspuns returnat de filtrele authenticate ajunge să suprascrie orice este returnat de wp_authenticate, deci nu este exact ceea ce căutam - probabil am formulat greșit întrebarea =/

Ken Ken
9 nov. 2015 12:55:09
2

Ah, se pare că add_filter/action('authenticate', 'customcode', 30, 3) era ceea ce căutam...

Problema era că aveam prioritatea prea mică, așa că orice răspuns cream cu codul meu personalizat era suprascris de celelalte filtre.

Prin afișarea global $wp_filter['authenticate'] am putut vedea următoarele filtre:

20, wp_authenticate_username_password
30, wp_authenticate_cookie
99, wp_authenticate_spam_check

Prin schimbarea priorității la 100 (sau mai mare), am putut face suprascrierea și să creez răspunsul dorit pentru gestionarea credențialelor de autentificare trimise prin pagina de logare.

9 nov. 2015 12:38:18
Comentarii

Există doar două argumente pentru customcode, deci ar trebui să fie add_action('authenticate', 'customcode', 30, 2). Numărul 3 este confuz.

Ion Ion
29 nov. 2016 15:58:09

authenticate ar trebui să fie un filtru, cred, https://codex.wordpress.org/Plugin_API/Filter_Reference/authenticate

Anunay Anunay
25 mar. 2018 17:29:47