您好,登錄后才能下訂單哦!
我們app的開發通常有2種認證方式 一種是Basic Auth,一種是OAuth;現在普遍還是使用OAuth的多,而使用Basic Auth認證的少,正好呢我今天給大家介紹的就是使用的比較少的Badic Auth認證方式,這種認證方式開發和調試簡單, 沒有復雜的頁面跳轉邏輯和交互過程,更利于發起方控制。然而缺點就是安全性更低,不過也沒事,我們可以使用https安全加密協議,這樣才更安全。
我使用的是AFNetworking發送的網絡請求,因此我們用Basic Auth認證方式就不能再使用AFN的默認的GET或者POST請求,而是自己定義的NSMutableRequest請求,使用AFN發送,如下面代碼:
[objc] view plain copy
//http的get請求地址
NSString *urlStr=[NSString stringWithFormat:@"https://192.168.1.157:8443/v1/sms/send/%@",self.username.text];
NSURL *url = [NSURL URLWithString:urlStr];
//自定義的request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//請求過期時間
request.timeoutInterval = 10;
//get請求
request.HTTPMethod = @"GET";
//配置用戶名 密碼
NSString * str = [NSString stringWithFormat:@"%@:%@",@"lairen.com",@"sdclean.com"];
//進行加密 [str base64EncodedString]使用開源Base64.h分類文件加密
NSString * str2 = [NSString stringWithFormat:@"Basic %@",[str base64EncodedString]];
[request setValue:str2 forHTTPHeaderField:@"Authorization"];
AFHTTPRequestOperation *op=[[AFHTTPRequestOperation alloc]initWithRequest:request];
//設置返回數據為json數據
op.responseSerializer= [AFJSONResponseSerializer serializer];
//發送網絡請求
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@",error);
}];
//請求完畢回到主線程
[[NSOperationQueue mainQueue] addOperation:op];
使用Basic Auth認證方式,AFN發送網絡請求就是上述代碼的格式,其中代碼的一些難懂的點,我在下圖做了注釋;
我注釋的第一個是用戶名,第二個是密碼,這個使我們Basic Auth認證方式必須設置的請求頭,然后第三個呢是我們為了我確保安全把用戶名和密碼的字符串進行了Base64加密,使用的2個文件是開源的Base64.h Base64.m 。github上面就可以下載。
上述代碼中的這行是對字符串進行的加密,記住是使用的Base64.h分類方法進行的加密,一定要先導入Base64.h文件才可以這樣加密。
[objc] view plain copy
[str base64EncodedString]
[objc] view plain copy
NSString * str2 = [NSString stringWithFormat:@"Basic %@",[str base64EncodedString]];
到這里我們的Basic Auth認證方式就講完了,怎么樣,很簡單吧。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。