最近在使用 laravel/fortify 的过程中发现,在不同的环境中,一个环境 2fa 验证正常,但是另外一个环境验证一直失败,即使输入的是正确的验证码。
后来想起了 totp 算法相关的一个很关键的点,就是生成的验证码是基于时间的,这样一来,如果某一个环境上的时间是不对的(这里的不对是指不是那个环境时区上对应的准确时间),是不是和客户端生成的验证码不一样了。
后来经过验证发现,的确是这个原因导致的。
只有服务器的时间是正常的时间,UTC + 时区对应的小时数这样,验证都不会有问题。
另外,快速设置时间的方式:
date -s '20:09:41 2019-12-08'
文章讲述了在使用Laravel框架的Fortify进行双因素认证时,不同环境因时间设置问题导致验证失败的经历。关键在于服务器时间必须与UTC时区同步,否则基于时间的验证码会不匹配。作者提供了快速设置时间的方法作为解决方案。
1669

被折叠的 条评论
为什么被折叠?



