wp_check_password

Сравнивает строки паролей: читабельный пароль (обычный) с кодированным паролем (в виде хэша). Нужна для проверки пароля пользователя.

Поддерживает обратную совместимость со старой версией протокола аутентификации, который еще не использует библиотеку PHPass.

Параметр $hash закодированный пароль (храниться в БД), а параметр $password – обычный текстовый пароль. Функция сравнивает кодирует переданный текстовый пароль и сравнивает получившийся хэш с указанным, если они кодированы по одному принципу, то пароли совпадают и функция вернет true.

Для интеграции с другими приложениями, wp_check_password() можно переопределить в плагине, и таким образом использовать другой алгоритм проверки паролей.
Хуки из функции:
check_password
Возвращает

Логическое: false, если пароль не совпадает с хэшем.

Использование

wp_check_password( $password, $hash, $user_id );
$password(строка) (обязательный)
Пароль в виде обычного текста.
$hash(строка) (обязательный)
Закодированный пароль с которым нужно сравнить первый параметр.
$user_id(число)
ID пользователя, которому нужно пересохранить хэш пароля в соответствии с новым (последним) алгоритмом хэширования. Пересохранине произойдет только если указанный пароль пройдет проверку.

Примеры

#1 Проверим пароль пользователя

Допустим у нас есть пароль в виде обычного текста и нам нужно узнать является ли этот пароль паролем пользователя с ID 3:

<?php
function wp_check_password($password, $hash, $user_id = '') {
	global $wp_hasher;

	// If the hash is still md5...
	if ( strlen($hash) <= 32 ) {
		$check = hash_equals( $hash, md5( $password ) );
		if ( $check && $user_id ) {
			// Rehash using new hash.
			wp_set_password($password, $user_id);
			$hash = wp_hash_password($password);
		}

		/**
		 * Filters whether the plaintext password matches the encrypted password.
		 *
		 * @since 2.5.0
		 *
		 * @param bool       $check    Whether the passwords match.
		 * @param string     $password The plaintext password.
		 * @param string     $hash     The hashed password.
		 * @param string|int $user_id  User ID. Can be empty.
		 */
		return apply_filters( 'check_password', $check, $password, $hash, $user_id );
	}

	// If the stored hash is longer than an MD5, presume the
	// new style phpass portable hash.
	if ( empty($wp_hasher) ) {
		// By default, use the portable hash from phpass
		$wp_hasher = new PasswordHash(8, true);
	}

	$check = $wp_hasher->CheckPassword($password, $hash);

	/** This filter is documented in wp-includes/pluggable.php */
	return apply_filters( 'check_password', $check, $password, $hash, $user_id );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *