Spec-Zone .ru
спецификации, руководства, описания, API
|
Пакет возврата от сервера во время аутентификации получается 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()
укажет ли аутентификация, за которой фактически следуют.