Глядя на исходный код , в функции auth_does_password_match()
, которая фактически выполняет аутентификацию:
function auth_does_password_match( $p_user_id, $p_test_password ) {
$t_configured_login_method = config_get_global( 'login_method' );
if ( LDAP == $t_configured_login_method ) {
return ldap_authenticate( $p_user_id, $p_test_password );
}
# code continues with a try for each of the other authentication methods
# ...
}
1-е условие проверяет метод входа в систему $t_configured_login_method
и, если это «LDAP», пытается выполнить соответствующую аутентификацию. Ладно, ничего сумасшедшего, но утверждение return ldap_authenticate(...);
не позволяет использовать другие методы аутентификации.
Надеемся, что исправление не представляет особой проблемы, так что, если аутентификация LDAP не удалась, он может вернуться к другим методам аутентификации.
По сути, требуется, чтобы возвращаемое значение ldap_authenticate()
было возвращено только , если аутентификация LDAP прошла успешно, но не иначе, чтобы код мог продолжать попытки с другими методами аутентификации. 1-е условие будет выглядеть так:
if (LDAP == $t_configured_login_method && ldap_authenticate($p_user_id, $p_test_password)) {
return TRUE;
}
Чтобы все было правильно, вы можете создать свою собственную константу для t_configured_login_method
, чтобы вы могли добавлять свою собственную логику и не мешать другим методам аутентификации.