Recupera una riga di utente in base alla chiave di reimpostazione della password e al login

Descrizione

Una chiave è considerata "scaduta" se corrisponde esattamente al valore del campo chiave_di_attivazione_utente, anziché essere abbinata dopo il processo di hashing. Questo campo è ora un hashed; I vecchi valori non sono più accettati, ma hanno un codice WP_Error diverso, in modo da poter fornire un buon feedback agli utenti.

Parametri

$chiave

(stringa)(Richiesto)Hash per convalidare la password dell'utente che invia.

$login

(stringa)(Richiesto)Il login dell'utente.

Ritorno

(WP_User|WP_Error) Oggetto WP_User in caso di successo, oggetto WP_Error in caso di chiavi non valide o scadute.

Fonte

File: wp-includes/user.php

functioncheck_password_reset_key($key,$login){global$wpdb,$wp_hasher;$key=preg_replace('/[^a-z0-9]/i','',$key);if(empty($key)||!is_string($key)){returnnewWP_Error('invalid_key',__('Invalid key.'));}if(empty($login)||!is_string($login)){returnnewWP_Error('invalid_key',__('Invalid key.'));}$user=get_user_by('login',$login);if(!$user){returnnewWP_Error('invalid_key',__('Invalid key.'));}if(empty($wp_hasher)){require_onceABSPATHWPINC'/class-phpass.php';$wp_hasher=newPasswordHash(8,true);}/**
	 * Filters the expiration time of password reset keys.
	 *
	 * @since 4.3.0
	 *
	 * @param int $expiration The expiration time in seconds.
	 */$expiration_duration=apply_filters('password_reset_expiration',DAY_IN_SECONDS);if(false!==strpos($user->user_activation_key,':')){list($pass_request_time,$pass_key)=explode(':',$user->user_activation_key,2);$expiration_time=$pass_request_time+$expiration_duration;}else{$pass_key=$user->user_activation_key;$expiration_time=false;}if(!$pass_key){returnnewWP_Error('invalid_key',__('Invalid key.'));}$hash_is_correct=$wp_hasher->CheckPassword($key,$pass_key);if($hash_is_correct&&$expiration_time&&time()<$expiration_time){return$user;}elseif($hash_is_correct&&$expiration_time){// Key has an expiration time that's passed.returnnewWP_Error('expired_key',__('Invalid key.'));}if(hash_equals($user->user_activation_key,$key)||($hash_is_correct&&!$expiration_time)){$return=newWP_Error('expired_key',__('Invalid key.'));$user_id=$user->ID;/**
		 * Filters the return value of check_password_reset_key() when an
		 * old-style key is used.
		 *
		 * @since 3.7.0 Previously plain-text keys were stored in the database.
		 * @since 4.3.0 Previously key hashes were stored without an expiration time.
		 *
		 * @param WP_Error $return  A WP_Error object denoting an expired key.
		 *                          Return a WP_User object to validate the key.
		 * @param int      $user_id The matched user ID.
		 */returnapply_filters('password_reset_key_expired',$return,$user_id);}returnnewWP_Error('invalid_key',__('Invalid key.'));}

Correlato

Utilizzi

Usi Descrizione
wp-includes/user.php: password_reset_expiration

Filtra il tempo di scadenza delle chiavi di reset della password.

wp-includes/compat.php: hash_equals()

Attacco al tempo per un confronto sicuro tra stringhe

wp-includes/l10n.php: __()

Recupera la traduzione di $testo.

wp-includes/pluggable.php: get_user_by()

Recupera le informazioni sull'utente in base a un determinato campo

wp-includes/plugin.php: applica_filtri()

Richiama le funzioni di callback che sono state aggiunte a un gancio per filtri.

wp-includes/user.php: password_reset_key_expired

Filtra il valore di ritorno di check_password_reset_key() quando viene usata una chiave vecchio stile.

wp-includes/class-wp-error.php: WP_Error::__construct()

Inizializza l'errore.

Changelog

Versione Descrizione
3.1.0 Introdotto.