IOS 记录用户登陆状态 第二次免登陆
NSUserDefault是苹果提供给我们用来存储用户的登陆信息的持久化类。下面用实例看下记录登陆状态的过程
HRAccountTool.h:
#import <Foundation/Foundation.h> @interface HRAccountTool : NSObject /** * 存储账号信息 * @param account 需要存储的账号信息:第一个值为用户名;第二个值为密码 */ + (void)saveAccount:(NSArray *)account; /** * 返回存储的账号信息 * @return NSArray */ + (NSArray *)getAccount; /** * 返回存储的登陆用户名 * @return NSString */ + (NSString *)getUserName; /** * 返回存储的登陆用户密码 * @return NSString */ + (NSString *)getPassword; @end
实现类
HRAccountTool.m:
<pre name="code" class="objc">#import "HRAccountTool.h" @implementation HRAccountTool + (void)saveAccount:(NSArray *)account{ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; //保存数据 用户信息;用户名;用户密码 [userDefaults setObject:account forKey:@"account" ]; [userDefaults setObject:[account objectAtIndex:0] forKey:@"userName" ]; [userDefaults setObject:[account objectAtIndex:1] forKey:@"passWord" ]; }; + (NSArray *)getAccount{ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSArray *array = [userDefaults objectForKey:@"account"]; return array; }; + (NSString *)getUserName{ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSString *userName = [userDefaults objectForKey:@"userName"]; return userName; }; + (NSString *)getPassword{ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSString *passWord = [userDefaults objectForKey:@"passWord"]; return passWord; } @end
在AppDelegate.m的页面跳转方法中,可以调用获取用户信息/用户名的方法来判断是否需要登陆。不需要则直接进入主页,需要则进入登陆页:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor whiteColor]; // 先判断有无存储账号信息 if ([HRAccountTool getUserName] == nil) { // 之前没有登录成功 self.window.rootViewController = [[HRLoginViewController alloc] init]; } else {// 之前登录成功 // self.window.rootViewController = [[IWOAuthViewController alloc] init]; } [self.window makeKeyAndVisible]; return YES; }
如进入登陆页 在登陆事件中 持久化登陆用户信息到NSUserDefault中,即可保证下次免登陆:
- (void) loginCheck{ // 1.创建请求管理对象 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; // 说明服务器返回的JSON数据 mgr.responseSerializer = [AFJSONResponseSerializer serializer]; // 2.封装请求参数 NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@"userName"] = userNameTF.text; params[@"passWord"] = passWordTF.text; // 3.发送请求 [mgr GET:@"http://localhost:8080/login/check.do" parameters:params success:^(AFHTTPRequestOperation *operation, NSDictionary *responseObject) { if ([[responseObject objectForKey:@"success"] boolValue] == true) { self.view.window.rootViewController = [[ZYTabBarViewController alloc]init]; NSArray *array = [NSArray arrayWithObjects:userNameTF.text, passWordTF.text, nil ]; [HRAccountTool saveAccount:array]; }else{ self.view.window.rootViewController = [[ZYloginViewController alloc]init]; } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { HRLog(@"请求失败:%@", error); }]; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。