IOS 記錄使用者登陸狀態 第二次免登陸
阿新 • • 發佈:2018-12-23
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);
}];
}