手势密码验证逻辑

1. 背景

公司最近的项目为了保护App数据资源的安全,而又为了节省用户操作的步骤,而采用了手势密码优化验证过程。

2. 手势密码验证的逻辑

2.1、 首先先判断用户是否已经设置过手势密码

是否已经设置过手势密码

2.2、 如果已经设置过手势密码,则进入流程一

已经设置了手势密码

2.3、 用户没有设置手势密码,则进入流程二,进行设置手势密码

进行手势密码设置

2.3、 流程三为修改手势密码

修改手势密码

2.4、 最后为总的流程图

总的流程图

3. 下面为手势密码实现的代码

3.1、 iOS客户端要满足上面几种复杂的需求,需要做很多种情况下的判断

最终分为5种情况来判断:

1)当手势密码为空的时候,第一次录入手势密码
1.1)再次确定录入的手势密码,两次相同则成功录入
1.2)两次录入的密码不一致,录入失败
2)已经录入过了手势密码,输入的手势密码错误
3)已经录入过了手势密码,输入的手势密码正确

我们只需要做以上5种情况的判断,即可以完成上面流程图中的所有逻辑判断

3.2、 实例代码

首先,需要创建手势密码的类,然后实现它的代理方法

-(void)guestureLock:(DBGuestureLock *)lock didSetPassword:(NSString *)password { //NSLog(@"Password set: %@", password); if (lock.firstTimeSetupPassword == nil) { lock.firstTimeSetupPassword = password; NSLog(@"varify your password"); NSLog(@"当前的密码:%@", [DBGuestureLock getGuestureLockPassword]); self.label.text = @"请再次输入你的手势密码:"; } }
-(void)guestureLock:(DBGuestureLock *)lock didGetCorrectPswd:(NSString *)password { //NSLog(@"Password correct: %@", password); if (lock.firstTimeSetupPassword && ![lock.firstTimeSetupPassword isEqualToString:DBFirstTimeSetupPassword]) { lock.firstTimeSetupPassword = DBFirstTimeSetupPassword; NSLog(@"已经录入手势密码!"); self.label.text = @"已经录入手势密码!"; } else { NSLog(@"密码正确"); self.label.text = @"密码正确!"; } }
-(void)guestureLock:(DBGuestureLock *)lock didGetIncorrectPswd:(NSString *)password { //NSLog(@"Password incorrect: %@", password); NSLog(@"%@ %@", lock.firstTimeSetupPassword, DBFirstTimeSetupPassword); if (![lock.firstTimeSetupPassword isEqualToString:DBFirstTimeSetupPassword]) { NSLog(@"Error: 两次密码不一致!"); self.label.text = @"两次密码不一致!"; } else { NSLog(@"密码错误!"); self.label.text = @"密码错误!"; } }

完整的代码,稍后会上传上来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容