10.6 证明超时失效的比较算式
最后更新于:2022-04-01 22:30:15
# 10.6 证明超时失效的比较算式
本节我们要证明 [10.2.4 节](#resetting-the-password)比较密码重设超时失效的算式是正确的。我们先来定义两个时间间隔:表示发送密码重设邮件后经过的时间,表示限制的失效时长(例如两个小时)。如果邮件发出后经过的时间比限制的失效时长长,说明此次密码重设请求已经失效,即:
如果用 表示现在的时间,表示发送邮件的时间,表示失效的时间(例如两个小时以前),那么:
把这两个等式代入第一个算式:
在这个不等式的两边乘于 -1 后得到:
把 = 2.hours.ago 代入这个不等式后就能得到[代码清单 10.53](#listing-user-model-password-reset-expired) 中的 `password_reset_expired?` 方法:
```
def password_reset_expired?
reset_sent_at < 2.hours.ago
end
```
[10.2.4 节](#resetting-the-password)说过,如果把 `<` 理解成“超过”而不是“小于号”的话,就能得到一个符合人类逻辑的句子:“密码重设邮件已经发出超过两小时”。
';