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 або null іншіwise. * @param string $username Username або 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
(рядок) - Логін чи email. Email працює з версії WP 4.5.0, до цього можна було вказати тільки логін.
-
$password
(рядок) - Пароль у НЕ зашифрованому вигляді.
Приклади
#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. |
Де викликається хук
Де використовується хук у 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);