在我正在处理的应用程序中,我让用户使用密码作为其TouchID的备份。显然,出于安全原因,这个密码应该具有某种形式的超时'类似于iPhone锁屏。
实现这一目标的最佳方法是什么?
我最初的想法是保存用户上次不正确的尝试,并检查它是否超过当前日期之前的x分钟数。
我认为这可以在实践中发挥作用,但是将其与系统时钟联系起来绝对不是最安全的方式。
对此事的任何帮助将不胜感激。
答案 0 :(得分:1)
我已在多个应用中实现了某种形式。我通常做的是使用一个计时器,该计时器在用户与应用程序交互时开始(如果存在,则取消之前的计时器)。当时间用完时,则运行超时方法。
像这样:
- (void)pressedButton:(UIButton *)button {
// record button press
[self scheduleInteractionTimer];
}
- (void)scheduleInteractionTimer {
if (_timeoutTimer) {
[_timeoutTimer invalidate];
}
_timeoutTimer = [NSTimer timerWithTimeInterval:timeoutTime target:self selector:@selector(timeoutTripped) userInfo:nil repeats:NO];
_timeoutTimer.tolerance = 5.0; // optional
[[NSRunLoop mainRunLoop] addTimer:_timeoutTimer forMode:NSRunLoopCommonModes];
}
- (void)timeoutTripped {
// whatever should be done for a timeout...
}
你绝对可以将-scheduleInteractionTimer绑定到错误的响应或其他任何你喜欢的内容。
编辑:我还建议在应用进入后台时解除密码视图。
干杯
安东尼