如何为定时到期设置一个余地,以便产生误差,例如: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);
}
这个问题是一个详细说明 Password Reset Link Expiry ...我需要更多细节时间+/-
答案 0 :(得分: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);
}