我使用谷歌身份验证器在PHP中创建了双因素身份验证。它在我的localhost上运行良好,但在我的网站上生成的代码不匹配。我发现这是一个时间配置问题。协助我设置双因素的时间。
public function verifyCode($secret, $code, $discrepancy = 1, $currentTimeSlice = null)
{
if ($currentTimeSlice === null) {
$currentTimeSlice = floor(time() / 30);
}
for ($i = -$discrepancy; $i <= $discrepancy; $i++) {
$calculatedCode = $this->getCode($secret, $currentTimeSlice + $i);
if ($calculatedCode == $code ) {
return true;
}
}
return false;
}
很可能是Web服务器上的时间偏差。确保Web服务器上的时间正确且准确(UTC)。