authenticate
Позволяет дополнительно проверить данные авторизации (логин/пароль) пользователя, до того как он будет авторизован (данные пройдут аутентификацию).
Фильтр срабатывает всякий раз, когда юзер входит на сайт (авторизуется на сайте).
Этот фильтр является базовой проверкой логина/пароля в 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трока)
- Пароль в НЕ зашифрованном виде.
Примеры
#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 );
#2 Авторизация по кукам
После того как вы ввели логин и пароль и были авторизованы. В куки записывается ваш пароль в виде временного хэша (что-то вроде сесиии).
Авторизация по такому хэшу в куках происходит также на этом хуке с помощью функции wp_authenticate_cookie().
add_filter( 'authenticate', 'wp_authenticate_cookie', 30, 3 );
#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. |
Где вызывается хук
$user = apply_filters( 'authenticate', null, $username, $password );
Где используется хук в WordPress
add_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3 );
add_filter( 'authenticate', 'wp_authenticate_email_password', 20, 3 );
add_filter( 'authenticate', 'wp_authenticate_application_password', 20, 3 );
add_filter( 'authenticate', 'wp_authenticate_spam_check', 99 );
add_filter( 'authenticate', 'wp_authenticate_cookie', 30, 3 );