用户登陆总结

/*

 GET输入汉字会崩,url没有添加%转义stringByAddingPercentEscapesUsingEncoding

 post不用%转义也不会崩,要设置HTTPMothed 设置请求体

 目标:搭接面,在UI界面输入用户名和密码,不要在代码里面输入,return处理

 目标:自动登录

    用偏好设置保存

 问题:账号和密码不能明文保存

 目标:base64编码 A->QQ== 没补两个0,加一个等号, 如果有返回值,调用方法直接得到加密好的字符串

    如果没返回值,打印不出来,在内部加密了没有返回结果,外部获得不了加密结果

 目标:给用户信息加密,什么时候加密?登陆成功加密,保存在偏好设置里面,读取用户信息的时候解密

 目标:给服务器传递的之前base64方法加密(不能在网络传输明文账号密码),服务器保存加密后的密码和用户名

 问题:base64非常不安全,太容易解密,

    方案1用哈希分类  先试用,直接调用分类方法

 bug:重启电脑后程序崩溃,因为没打开阿帕奇服务器,url不能获取数据 $ sudo apachectl -k start

    方案2:加盐

    方案3:hmac (加字符串,md5两次) 每次结果相同,还是有可鞥被暴力破解,希望每次加密结果不同

    方案4:时间戳     NSLog(@"%@",[NSDate date]);//直接可以获取时间,格林威治时间

    方案5:服务器时间戳 本地时间跟服务器时间不同步,先获取服务器时间,同步获取

        网络上返回本地的数据都是NSData,必须解析-反序列化 NSJSON

 bug:账号密码不能登录@"http://127.0.0.1/loginhmac.php" 时间和key跟服务器都不同,肯定对不上

 风险:用户第一次注册被拦截:??????  辅助手段ip/电话

 目标:钥匙串安全存储用户密码, base64不安全, md5不能逆运算,不能返回密码

    利用第三方框架存储钥匙串,存到本地,网上传输的安全已经有保证了

 bug:密码显示乱码

     粗心了.self.pwd = [self timeHmac:self.pwd]; // 这样加密,后面用钥匙串加密,两种加密方式,登陆界面乱码

 // 第一次运行会崩

 目标:重构-单例保存登陆的代码,不能暴露给外界看,如何重构,什么方法抽取到其他文件?

 用单例调用自己的私有方法 userLogin

    没有从缓存中取到信息-->创建单例的时候调用loadUserInfo

 小步骤的拷贝代码

 目标:添加nav控制器done

 目标:切换控制器,用通知,block,

    通知:通知的使用步骤:注册通知中心,发送消息(登陆成功,发送消息),谁监听消息?监听到消息后跳转页面

        为啥在appDelegate里面监听通知,因为要跳转页面,获得window,在vc中能更换window么?可以但是不太好

        NSNotifactionCenter defaultCenter]post 发送

        NSNotifactionCenter defaultCente] addObs 添加观察者

        观察者方法@selector 用指定window是用sb实例化的VC UIStroyboard storyboardWithName;

        self.window.rootcontrl = sb.instanceVC

 目标:注销,通知注销后立刻又登陆了,登陆应在delegate里面?

 目标:一个通知,不同事件, post object参数给两个@"Main" @"Login" 用notice.object区分

    使用两个通知也可以,利用通知的object发送更多消息

    使用通知的步骤:1.发送post    2.添加观察者addObs

     NSNotifactionCenter defaultCenter]post 发送

     NSNotifactionCenter defaultCente] addObs 添加观察者

 目标:账号密码正确直接登陆done->在Appdelegate中创建单例,调用userlogin方法

 bug:密码错误也登陆,发送了通知 [webData[@"userId"] intValue];加上intValue密码错误就不能登陆了

    webData[@"userId"] > 0永远成立,后面的密码错误就不成立

 目标:登陆失败弹框-block done

 bug:第一次启动也弹框,判断,两个文本框都有内容才登陆,添加判断

 目标:登陆会闪黄色登陆框->添加白色背景

 如果UI更新很慢,可能是UI更新没在主线程

 sum:post发送密码请求

     时间戳记

     重构

     通知

 */

原文地址:https://www.cnblogs.com/tufei7/p/4830842.html