authenticateхук-фильтрWP 2.8.0

Позволяет дополнительно проверить данные авторизации (логин/пароль) пользователя, до того как он будет авторизован (данные пройдут аутентификацию).

Фильтр срабатывает всякий раз, когда юзер входит на сайт (авторизуется на сайте).

Этот фильтр является базовой проверкой логина/пароля в WordPress.

Используйте хук wp_authenticate_user, когда нужно сделать дополнительные проверки авторизации после базовой проверки WordPress, но до того, как пользователь будет авторизован, .

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

add_filter( 'authenticate', 'wp_kama_authenticate_filter', 10, 3 );

/**
 * Function for `authenticate` filter-hook.
 * 
 * @param null|WP_User|WP_Error $user     WP_User if the user is authenticated. WP_Error or null otherwise.
 * @param string                $username Username or email address.
 * @param string                $password User password.
 *
 * @return null|WP_User|WP_Error
 */
function wp_kama_authenticate_filter( $user, $username, $password ){

	// filter...
	return $user;
}
$user(null/WP_User/WP_Error)

Объект WP_User, если пользователь прошел проверку. Объект WP_Error или null.

Функция обработчик может вернуть:

  • WP_User - означает что проверка пройдена и можно перейти к следующим проверкам.
  • null - означает что проверки аутентификации еще не было.
  • WP_Error - означает, что проверка была, но данные не прошил эту проверку.
$username(cтрока)
Логин или email. Email работает с версии WP 4.5.0 до этого можно было указать только логин.
$password(cтрока)
Пароль в НЕ зашифрованном виде.

Примеры

0

#1 Базовая проверка авторизации (логина и пароля) в WordPress

Для базовой проверки на хук authenticate прицеплены 3 функции:

Из файла: /wp-includes/default-filters.php.

// Default authentication filters
add_filter( 'authenticate', 'wp_authenticate_username_password',  20, 3 );
add_filter( 'authenticate', 'wp_authenticate_email_password',     20, 3 );
add_filter( 'authenticate', 'wp_authenticate_spam_check',         99    );
0

#2 Авторизация по кукам

После того как вы ввели логин и пароль и были авторизованы. В куки записывается ваш пароль в виде временного хэша (что-то вроде сесиии).

Авторизация по такому хэшу в куках происходит также на этом хуке с помощью функции wp_authenticate_cookie().

add_filter( 'authenticate', 'wp_authenticate_cookie', 30, 3 );
0

#3 Авторизация через пароль приложения

После добавления паролей приложений, на этом хуке также происходит авторизация по паролю-приложения. За это отвечает функция wp_authenticate_application_password().

add_filter( 'authenticate', 'wp_authenticate_application_password', 20, 3 );

Список изменений

С версии 2.8.0 Введена.
С версии 4.5.0 $username now accepts an email address.

Где вызывается хук

wp_authenticate()
authenticate
wp-includes/pluggable.php 618
$user = apply_filters( 'authenticate', null, $username, $password );

Где используется хук в WordPress

wp-includes/default-filters.php 483
add_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3 );
wp-includes/default-filters.php 484
add_filter( 'authenticate', 'wp_authenticate_email_password', 20, 3 );
wp-includes/default-filters.php 485
add_filter( 'authenticate', 'wp_authenticate_application_password', 20, 3 );
wp-includes/default-filters.php 486
add_filter( 'authenticate', 'wp_authenticate_spam_check', 99 );
wp-includes/user.php 104
add_filter( 'authenticate', 'wp_authenticate_cookie', 30, 3 );