1

如何为定时到期设置一个余地,以允许误差范围,例如:1 分钟?

目前这是我的粗略实现,我必须在最后一分钟添加另一个检查,以防服务器收到消息 00:01:00 并且客户端发送 00:00:59;

/**Client**/
int minutesNow = timeInSeconds()/60;
String mySignature = genAlgo(minutesNow, firstPassword);
sendToServer(mySignature);

/**Server**/
int minutesNow = timeInSeconds()/60;
String userPassword = getUserPassword();
boolean result = verifySig(mySignature, userPassword, minutesNow);
if(!result)
{
   result = verifySig(mySignature, userPassword, --minutesNow);
}

这个问题是对 密码重置链接到期的详细说明......我需要更多详细信息来了解时间 +/-

4

1 回答 1

1

您只需要在服务器端进行几次检查:当前分钟、前分钟和未来分钟。

它看起来像这样:

/**Server**/
int validationWindow = 1; // in minutes
int minutesNow = timeInSeconds()/60;
String userPassword = getUserPassword();

int timeToCheck = minutesNow - validationWindow; 
boolean result = verifySig(mySignature, userPassword, timeToCheck);
while (!result && timeToCheck <= minutesNow + validationWinwow) {
    result = verifySig(mySignature, userPassword, ++timeToCheck);
}
于 2014-09-06T19:52:01.547 回答