zoukankan      html  css  js  c++  java
  • iOS中自动登录的设计

    1.//这是登录控制器页面

    - (void)viewDidLoad {

        [super viewDidLoad];

          //lt.iSNextAutoLogin是单利中的一个属性,用来保存下次是否自动登录

        //如果是第一次使用app登录,iSNextAutoLogin默认就时NO,之后有了缓存之后就从缓存中取iSNextAutoLogin的值

        LTUserInfo *lt=[LTUserInfo defaultUserInfo];

        NSUserDefaults *def=[NSUserDefaults standardUserDefaults];

        if([def boolForKey:@"iSNextAutoLogin"]==NO ||[defboolForKey:@"iSNextAutoLogin"]==YES ){

            lt.iSNextAutoLogin=[def boolForKey:@"iSNextAutoLogin"];

        }

        

        //=============

        if(lt.iSNextAutoLogin==NO){

        //每次程序刚启动的时候,iSNextAutoLogin的值都是NO。不执行自动登录

        }else{

            lt.iSAutoLogin=YES;//在后面吧iSNextAutoLogin的值改成yes。程序长时间锁屏后打开,执行自动登录;

        }

       //===============

        if(lt.iSAutoLogin==NO){ //不执行自动登录

        }else{

        //根据是否点击退出按钮来决定是否执行自动登录

        

       if([lt.loginOutMark isEqualToString:@"loginOut"]){

            NSLog(@"点击的是退出按钮,不执行自动登录");

        }else{

            //如果保存的用户名密码存在,就执行自动登录

            NSUserDefaults *tempDefaults = [NSUserDefaultsstandardUserDefaults];

            if(![[tempDefaultsobjectForKey:@"LTUSERNAME"]isEqualToString:@""] &&![[tempDefaults objectForKey: @"LTUSERPASSWORD"]isEqualToString:@""]){

                self.userNameTF.text=[tempDefaultsobjectForKey:@"LTUSERNAME"];

                self.passWordTF.text=[tempDefaults objectForKey: @"LTUSERPASSWORD"];

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 *NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

            

            [self loginButtonPressed:nil];//设置自动登录,这里必须要延迟执行,否则登录页面没有加载完毕,会网络状态出不来;

        });

            }else{

                NSLog(@"用户名或密码不存在");

            }

        }}

    //    //接收自动登录的通知。从appdelegate中来

    //    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(refreshLoad:) name:@"refreshLoad" object:nil];

    }

    2.//登录按钮的方法中保存密码和设计下次是否自动登录的标记                

            LTUserInfo *lt=[LTUserInfo defaultUserInfo];

            lt.iSNextAutoLogin=YES;//第一次登录成功后,长时间锁屏再打开执行自动登录的标记,在退出程序的时候再设置iSNextAutoLogin为NO,这样下次就不自动登录

        NSUserDefaults *def =[NSUserDefaults standardUserDefaults];

            [def setBool:YES forKey:@"iSNextAutoLogin"];

            [def synchronize];

        //=========不管有没有勾选,记住用户名密码

            NSUserDefaults *tempDefaults = [NSUserDefaultsstandardUserDefaults];

            [tempDefaults setObject:self.userNameTF.text forKey: @"LTUSERNAME"];

            [tempDefaults setObject:self.passWordTF.text forKey: @"LTUSERPASSWORD"];

            [tempDefaults synchronize];

        //=========不管有没有勾选,记住用户名密码

    3.在appdelegate中:

    //程序将要终止

    - (void)applicationWillTerminate:(UIApplication *)application {

        //程序退出,保存iSNextAutoLogin为NO;表示下次不自动登录

        NSUserDefaults *def =[NSUserDefaults standardUserDefaults];

        [def setBool:NO forKey:@"iSNextAutoLogin"];

        [def synchronize];

        NSLog(@"程序将要终止");

    }

     

    //以上几步可以实现:在app关闭的状态下打开app不自动登录,长时间锁屏后打开app实现自动登录。

  • 相关阅读:
    nginx安装
    Mybatis使用generator自动生成映射配置文件信息
    Mysql报错Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
    JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
    js获取select标签选中的值
    linux下使用ffmpeg将amr转成mp3
    String与InputStream互转的几种方法
    javascript,检测对象中是否存在某个属性
    SQL语句在查询分析器中可以执行,代码中不能执行
    shell实现SSH自动登陆
  • 原文地址:https://www.cnblogs.com/fengmin/p/7777160.html
Copyright © 2011-2022 走看看