IOS 记录用户登陆状态 第二次免登陆

来源:互联网 发布:淘宝联盟一个月赚多少 编辑:程序博客网 时间:2024/06/05 11:26

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);     }];    }


0 0