• 用户登陆总结


    /*

     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发送密码请求

         时间戳记

         重构

         通知

     */

  • 相关阅读:
    因为付出,所以喜欢。开发就是这么坑!
    停滞在一个圈子,决定人生的高低![深度文章]
    我不曾忘记的初心-程序员如何看待买房子
    能力要进化-还在技术停滞不前吃老本吗?
    能力要进化-还在技术停滞不前吃老本吗?
    我不曾忘记初心-我们最终都成了自己讨厌的人
    我不曾忘记初心-我们最终都成了自己讨厌的人
    我不曾忘记的初心-冒险努力正是你缺少的!
    我不曾忘记的初心-冒险努力正是你缺少的!
    JS之正则表达式
  • 原文地址:https://www.cnblogs.com/tufei7/p/4830842.html
Copyright © 2020-2023  润新知