在进行设置自动转发,增删来信规则,修改密码等操做时,增长必须绑定手机而且验证手机号的安全认证操做.在这个过程当中使用控制反转的设计模式封装一个单独的类能够灵活的复用代码和调整逻辑前端
首先定义一个SecureTel的class类,这个类里面提供全部业务方法.在生成SecureTel对象的时候,须要使用框架内提供的一个生成对象的方法来操做,不能直接去new这个类,这个方法就是Sina_Application::resource('securetel'),在这个生成器中,会去调用SecureTel类中的createResource方法,而且会把配置文件中对应该类的参数传递进去.数据库
SecureTel类就能够在自身的createResource方法中进行new本身这个对象,而且能够把配置文件的参数设置到本身的属性里,在其余的方法中能够根据属性进行业务判断设计模式
经过上面的处理,能够灵活的使用这个类在各个接口的控制器代码中,达到复用代码的目的.而且能够直接在配置文件中对这个类里面的属性进行控制,方便在进行业务调整时不去修改类内部的逻辑安全
上面是在代码层面的设计,下面是在业务的层面介绍一下
1.请求过来后,由于在这个逻辑中是不会有高并发的状况,直接查询数据库绑定手机表,断定是否已经绑定手机.若是没有绑定手机直接返回对应的错误码
2.绑定了手机状况下,要去memcache查询是否已经验证过了,key就是"c:xxxx@xxxx.com",这个key的过时时间是一天,若是有值,说明验证过了,没值就返回另外一个错误码
3.在配置文件中,能够配置是否开启这个手机验证功能,防止在短信接口不能用时,影响用户操做,能够直接关闭全部业务的验证功能.这个配置对应
SecureTel类中的一个属性,其余方法对这个属性进行断定
4.在配置文件能够配置验证后的过时时间,这个在测试中能够进行灵活修改,让测试人员短时间能够屡次测试.
5.前端根据不一样的错误码,进行不一样的弹窗,绑定手机的弹窗和验证手机的弹窗并发