項目裡,需要在客戶登陸後保持登陸狀態。使用的不是儲存使用者名稱和密碼,每次去類比登陸。
而是登入時,登陸成功,從伺服器接收token,token是伺服器產生的一個字串,唯一標識一個使用者,並且會在一段時間後銷毀,所以我們很久不登入APP,會要求重新登入。
利用一個工具類,進行token的儲存、刪除和讀取。登陸成功進行儲存、下一次開啟APP進行讀取、退出進行刪除。
如果,有refreshtoken,可以進行跟新,就不用再次登入。
代碼如下:
#import "GCTokenManager.h"NSString *const TOKEN_KEY = @"token";@implementation GCTokenManager// 儲存token+(void)saveToken:(GCToken *)token{ NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults]; NSData *tokenData = [NSKeyedArchiver archivedDataWithRootObject:token]; [userDefaults setObject:tokenData forKey:TOKEN_KEY]; [userDefaults synchronize];}// 讀取token+(GCToken *)getToken{ NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSData *tokenData = [userDefaults objectForKey:TOKEN_KEY]; GCToken *token = [NSKeyedUnarchiver unarchiveObjectWithData:tokenData]; [userDefaults synchronize]; return token;}// 清空token+(void)cleanToken{ NSUserDefaults *UserLoginState = [NSUserDefaults standardUserDefaults]; [UserLoginState removeObjectForKey:TOKEN_KEY]; [UserLoginState synchronize];}// 跟新token+(GCToken *)refreshToken{ return nil;}
這裡的GCToken 是伺服器端返回的token的模型,要根據自己項目中返回的JSON自訂。