ashfame
  • 0
Гуру

Проверьте пароль пользователя

  • 0

Я хочу проверить, есть ли у пользователя определенный пароль, поэтому я пытался его использовать, wp_check_password но учетная запись, для которой он проверяется, выходит из системы и не может снова войти в систему, пока wp_check_password в коде не будет вызова.

Копаясь в коде, я обнаружил, что он устанавливает пароль, используя новый хэш. и более того, если я использую wp_check_password( 'hello', md5('hello'), 1 );, он даже не проверяет, что находится внутри базы данных, и возвращает true. Разве это не ошибка?

Любые идеи, как я могу проверить пароль пользователя?

Share

  1. Ваш пример работает корректно. Вы проверяете,
    hello соответствует ли пароль хешированному
    hello, что, естественно, и происходит.

    Не продумал. Ваш пример вызывает следующую проблему:

    1. Вы проверяете, hello соответствует ли md5 hello (вместо хеша из профиля пользователя).
    2. Это так, а затем WP считает, что это правильно, но устаревший хэш md5 — его нужно обновить.
    3. Он повторно хеширует hello и обновляет пользователя с ним, блокируя его (поскольку его пароль теперь hello вместо того, что было раньше).

    Подробный wp_authenticate_username_password() пример см. в функции, но основная идея такова:

    $userdata = get_user_by('login', $username);
    $result = wp_check_password($password, $userdata->user_pass, $userdata->ID);
    
    • 0
  2. Вы можете получить их хешированный пароль из базы данных и сравнить его с записью, которую вы хотите проверить, используя wp_hash_password().

    Чтобы проверить, соответствует ли пароль текущего пользователя «hello», попробуйте следующее:

    if ( $current_user->user_pass == wp_hash_password( 'hello' ) )
    
    • 0

Оставить ответ

You must login to add an answer.