#php #sonata #google-authenticator
Вопрос:
Это странная проблема, и я просто ищу некоторые идеи о том, где искать или что это может быть, пожалуйста.
На моем локальном компьютере разработчика, XAMPP PHP 7.1, sonata Google-Аутентификатор версии 2.2, Когда я делаю $GoogleAuthenticator->getCode($secret) Я получаю тот же код, который вижу на своем мобильном/сотовом телефоне.
На удаленном сервере A2Hosting код не совпадает.
Оба сервера используют один и тот же код, только моя локальная машина-http, а удаленная-https, с разными именами хостов/доменов.
Чтобы сделать это очень странным, $GoogleAuthenticator->Контрольный код($секрет, $код) >возвращает значение true
Как возможно, что getCode по сравнению с тем, что я ввожу, не совпадает, в то время как checkCode возвращает значение true?
Моя единственная идея заключается в том, что у сервера возникла проблема с тем, что DateTimeImmutable не возвращает нужное время. Возможно, сервер не синхронизирован с правильным мировым временем. Я заметил, что метка времени DateTimeImmutable на несколько секунд отличается от метки удаленного сервера. Примерно на 25 секунд отличается.
Комментарии:
1. Я полагаю, что вы определили проблему с синхронизацией времени. Если я не ошибаюсь, существует льготный период, когда старый код все еще разрешен в течение короткого периода времени после истечения срока действия-это фактически позволит вашим двум кодам работать одновременно.
2. Я ограничен версией 2.2 из-за ограничения версии PHP, которую я могу использовать. Должен ли я сравнить код новой версии со старой и внести коррективы? Устранит ли это проблему?
3. Если есть какая-то проблема, которую нужно исправить, я бы сказал, что это синхронизация времени удаленного сервера. 25 секунд — это совсем немного, чтобы отключиться.
4. Потому что, по-видимому, это нужно повторять несколько раз, на том сервере, где вы заметили, что время отключено на 25 секунд? Его время отключено на 25 секунд, что и является причиной вашей проблемы. Попросите администратора вашего сервера повторно синхронизировать время и снова включить ntpd.