ios中记录用户登录,第二次免登录

来源:互联网 发布:斗鱼卡卡淘宝店 编辑:程序博客网 时间:2024/06/06 02:04

NSUserDefault是苹果提供给我们用来存储用户的登陆信息的持久化类。下面用实例看下记录登陆状态的过程


首先创建用于存取用户信息的方法类

HRAccountTool.h

[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #import <Foundation/Foundation.h>  
  2.   
  3. @interface HRAccountTool : NSObject  
  4. /** 
  5.  *  存储账号信息 
  6.  *  @param account 需要存储的账号信息:第一个值为用户名;第二个值为密码 
  7.  */  
  8. + (void)saveAccount:(NSArray *)account;  
  9.   
  10. /** 
  11.  *  返回存储的账号信息 
  12.  * @return NSArray 
  13.  */  
  14. + (NSArray *)getAccount;  
  15.   
  16. /** 
  17.  *  返回存储的登陆用户名 
  18.  *  @return NSString 
  19.  */  
  20. + (NSString *)getUserName;  
  21.   
  22. /** 
  23.  *  返回存储的登陆用户密码 
  24.  *  @return NSString 
  25.  */  
  26. + (NSString *)getPassword;  
  27. @end  

实现类

HRAccountTool.m

[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <pre name="code" class="objc">#import "HRAccountTool.h"  
  2.   
  3. @implementation HRAccountTool  
  4.   
  5. + (void)saveAccount:(NSArray *)account{  
  6.     NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];  
  7.       
  8.     //保存数据 用户信息;用户名;用户密码  
  9.     [userDefaults setObject:account  forKey:@"account" ];  
  10.     [userDefaults setObject:[account objectAtIndex:0 forKey:@"userName" ];  
  11.     [userDefaults setObject:[account objectAtIndex:1 forKey:@"passWord" ];  
  12. };  
  13.   
  14.   
  15. + (NSArray *)getAccount{  
  16.      NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];  
  17.      NSArray *array = [userDefaults objectForKey:@"account"];  
  18.     return array;  
  19. };  
  20.   
  21. + (NSString *)getUserName{  
  22.      NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];  
  23.      NSString *userName = [userDefaults objectForKey:@"userName"];  
  24.     return userName;  
  25. };  
  26.   
  27. + (NSString *)getPassword{  
  28.     NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];  
  29.     NSString *passWord = [userDefaults objectForKey:@"passWord"];  
  30.     return passWord;  
  31. }  
  32. @end  


AppDelegate.m的页面跳转方法中,可以调用获取用户信息/用户名的方法来判断是否需要登陆。不需要则直接进入主页,需要则进入登陆页:
[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
  2.     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  
  3.     self.window.backgroundColor = [UIColor whiteColor];  
  4.     // 先判断有无存储账号信息  
  5.     if ([HRAccountTool getUserName] == nil) { // 之前没有登录成功  
  6.         self.window.rootViewController = [[HRLoginViewController alloc] init];  
  7.     } else {// 之前登录成功  
  8. //        self.window.rootViewController = [[IWOAuthViewController alloc] init];  
  9.     }  
  10.   
  11.     [self.window makeKeyAndVisible];  
  12.     return YES;  
  13. }  

如进入登陆页 在登陆事件中 持久化登陆用户信息到NSUserDefault中,即可保证下次免登陆:
[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. - (void) loginCheck{  
  2.     // 1.创建请求管理对象  
  3.     AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];  
  4.     // 说明服务器返回的JSON数据  
  5.     mgr.responseSerializer = [AFJSONResponseSerializer serializer];  
  6.     // 2.封装请求参数  
  7.     NSMutableDictionary *params = [NSMutableDictionary dictionary];  
  8.     params[@"userName"] = userNameTF.text;  
  9.     params[@"passWord"] = passWordTF.text;  
  10.       
  11.     // 3.发送请求  
  12.     [mgr GET:@"http://localhost:8080/login/check.do" parameters:params  
  13.      success:^(AFHTTPRequestOperation *operation, NSDictionary *responseObject) {  
  14.         if ([[responseObject objectForKey:@"success"] boolValue] == true) {  
  15.              self.view.window.rootViewController = [[ZYTabBarViewController alloc]init];  
  16.              NSArray *array  = [NSArray  arrayWithObjects:userNameTF.text, passWordTF.text, nil ];  
  17.                
  18.              [HRAccountTool saveAccount:array];  
  19.             }else{  
  20.              self.view.window.rootViewController = [[ZYloginViewController alloc]init];  
  21.          }  
  22.            
  23.      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
  24.         HRLog(@"请求失败:%@", error);  
  25.   
  26.      }];  
  27.       
  28. }  

0 0
原创粉丝点击