Spec-Zone .ru
спецификации, руководства, описания, API

15.7.4.6. Доступ к информации об Аутентификации сread_auth_result()

Пакет возврата от сервера во время аутентификации получается read_auth_result(). Единственным параметром этой функции является пакет аутентификации, возвращенный сервером. Поскольку пакет является необработанным пакетом протокола сети MySQL, следует получить доступ к первому байту, чтобы идентифицировать пакетный тип и содержание. MYSQLD_PACKET_ERR и MYSQLD_PACKET_OK константы могут использоваться, чтобы идентифицировать, была ли аутентификация успешна:

function read_auth_result(auth)        local state = auth.packet:byte()        if state == proxy.MYSQLD_PACKET_OK then                print("<-- auth ok");        elseif state == proxy.MYSQLD_PACKET_ERR then                print("<-- auth failed");        else                print("<-- auth ... don't know: " .. string.format("%q", auth.packet));        endend

Если длинный пароль, который способный клиент пытается аутентифицировать к серверу, который поддерживает долгие пароли, но пользовательский обеспеченный пароль, фактически короток, read_auth_result() будет вызван дважды. В первый раз, auth.packet:byte() будет равняться 254, указывая, что клиент должен попробовать еще раз использовать старый протокол пароля. Время второго раза read_auth_result()/ вызывается, auth.packet:byte() укажет ли аутентификация, за которой фактически следуют.