我已经使用
https://github.com/chregu/GoogleAuthenticator.php为我正在处理的Web应用程序构建了2因子身份验证.一切都有效,甚至代码都有效.
现在我在不同的服务器中设置相同的代码并生成新的密钥并将其添加到谷歌身份验证器移动应用程序现在移动中生成的代码不匹配.
现在我在不同的服务器中设置相同的代码并生成新的密钥并将其添加到谷歌身份验证器移动应用程序现在移动中生成的代码不匹配.
我通过比较两个服务器上的结果并注意到time()函数返回不同的时间(1小时差异),然后我强迫我的第二个服务器(谷歌代码没有工作)与第一个服务器有相同的时间,并且它工作.所以我真的很困惑这是某种时区问题吗?因为我真的需要这些服务器拥有自己的时区.
有什么工作吗?
此外,我遵循https://support.google.com/accounts/answer/185834?hl=en并同步我的谷歌身份验证器应用程序仍然无法正常工作.移动应用程序中生成的代码在一小时后在我的第二台服务器上运行.任何人都可以帮助我或建议我一个不同的方法.
这是我用来连接上面的库的代码
class googleAuthLibrary extends GoogleAuthenticator { public function getSecretKey() { $secretKey = $this->generateSecret(); return $secretKey; } public function getQRLink($username,$hostname,$secretKey) { $url = 'https://chart.googleapis.com/chart?cht=qr&chs=300x300&chl='; $qrCode = 'otpauth://totp/'.$username.'@'.$hostname.'?secret='.$secretKey; $url = $url.$qrCode; return $url; } public function getAuthCode($secretKey) { $authCode =$this->getCode($secretKey); return $authCode; } }