偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

iOS開發(fā)ASIHTTPRequest身份驗(yàn)證

移動(dòng)開發(fā) iOS
本文為大家介紹了iOS開發(fā)ASIHTTPRequest身份驗(yàn)證的內(nèi)容,其中包括為URL指定要使用的用戶名和密碼,為request指定要使用的用戶名和密碼,將憑據(jù)存儲(chǔ)到keychain,將憑據(jù)存儲(chǔ)到session中,NTLM授權(quán),使用代理來提供憑據(jù),使用內(nèi)建的授權(quán)對(duì)話框(目前只對(duì)iOS有效),在服務(wù)器請(qǐng)求憑據(jù)前向服務(wù)器發(fā)送憑據(jù)等等內(nèi)容。

本文為大家介紹了iOS開發(fā)ASIHTTPRequest身份驗(yàn)證的內(nèi)容,其中包括為URL指定要使用的用戶名和密碼,為request指定要使用的用戶名和密碼,將憑據(jù)存儲(chǔ)到keychain,將憑據(jù)存儲(chǔ)到session中,NTLM授權(quán),使用代理來提供憑據(jù),使用內(nèi)建的授權(quán)對(duì)話框(目前只對(duì)iOS有效),在服務(wù)器請(qǐng)求憑據(jù)前向服務(wù)器發(fā)送憑據(jù)等等內(nèi)容。

ASIHTTPRequest是簡單易用的,它封裝了CFNetwork API。使得與Web服務(wù)器通信變得更簡單。它是用Objective-C編寫的,可以在MAC OS X和iPhone應(yīng)用中使用。

你可以查閱下圖ASIHTTPRequest授權(quán)流程圖來了解ASIHTTPRequest如何找到授權(quán)憑據(jù),并將授權(quán)憑據(jù)應(yīng)用到request上。

為URL指定要使用的用戶名和密碼

  1. NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com/"]; 
  2. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 

為request指定要使用的用戶名和密碼

  1. NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com/"]; 
  2. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  3. [request setUsername:@"username"]; 
  4. [request setPassword:@"password"]; 

將憑據(jù)存儲(chǔ)到keychain

如果打開了keychainPersistence,所有提供的可用的用戶名和密碼將被存儲(chǔ)到keychain中,以后的request將會(huì)重用這些用戶名密碼,即使你關(guān)閉程序后重新打開也不影響。

  1. NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com/"]; 
  2. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  3. [request setUseKeychainPersistence:YES]; 
  4. [request setUsername:@"username"]; 
  5. [request setPassword:@"password"]; 

如果你使用keychain但是想要自己管理它,你可以在ASIHTTPRequest.h文件里找到相關(guān)的類方法。

將憑據(jù)存儲(chǔ)到session中

如果打開了useSessionPersistence(默認(rèn)即是如此),ASIHTTPRequest會(huì)把憑據(jù)存儲(chǔ)到內(nèi)存中,后來的request將會(huì)重用這些憑據(jù)。

  1. NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com/"]; 
  2. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  3. [request setUsername:@"username"]; 
  4. [request setPassword:@"password"]; 
  5. [request setUseSessionPersistence:YES]; //這一項(xiàng)是默認(rèn)的,所以并不必要 
  6.  
  7. //將會(huì)重用我們的 username 和 password 
  8. request = [ASIHTTPRequest requestWithURL:url]; 

NTLM授權(quán)

要使用NTLM授權(quán)的Windows服務(wù)器,你還需要指定你要進(jìn)行授權(quán)域。

  1. NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com/"]; 
  2. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  3. [request setUsername:@"username"]; 
  4. [request setPassword:@"password"]; 
  5. [request setDomain:@"my-domain"]; 

使用代理來提供憑據(jù)

你不一定非要提前指定授權(quán)憑據(jù),你還可以讓每個(gè)request在無法從session或keychain中找到憑據(jù)時(shí)向它們的代理請(qǐng)求憑據(jù)。如果你要連接到一個(gè)你并不清楚授權(quán)類型的服務(wù)器時(shí),這是很有用的。

你的delegate必須實(shí)現(xiàn)authenticationNeededForRequest:方法,當(dāng)request等待憑據(jù)時(shí),ASIHTTPRequest將會(huì)暫停這個(gè)request。如果你持有你需要的憑據(jù),那么先為request設(shè)定憑據(jù),然后調(diào)用[request retryUsingSuppliedCredentials]即可。如果你想取消授權(quán),調(diào)用[request cancelAuthentication],此時(shí),這個(gè)request也會(huì)被取消。

從1.0.8版開始,一次只能有一個(gè)request的delegate收到authenticationNeededForRequest: 或者 proxyAuthenticationNeededForRequest:。當(dāng)delegate處理第一個(gè)request時(shí),其他需要授權(quán)的request將會(huì)被暫停。如果提供了一個(gè)憑據(jù),當(dāng)前進(jìn)程中所有其他的request將會(huì)假定這個(gè)憑據(jù)對(duì)這個(gè)URL有效,并嘗試重用這個(gè)憑據(jù)。如果delegate取消了授權(quán),并且隊(duì)列的shouldCancelAllRequestsOnFailure值為YES,所有其他的request都將被取消(它們也不會(huì)嘗試請(qǐng)求憑據(jù))。

當(dāng)進(jìn)行同步請(qǐng)求時(shí),你不可以使用代理模式來授權(quán)。

在較老的版本中,這么做會(huì)導(dǎo)致程序假死,從1.0.8開始,即使你這么做了,代理函數(shù)也不會(huì)被調(diào)用。

使用內(nèi)建的授權(quán)對(duì)話框(目前只對(duì)iOS有效)

這個(gè)特性歸功于1.0.8版本的新類ASIAuthenticationDialog 。這個(gè)特性主要是用于授權(quán)代理(后面會(huì)介紹到),但是它也可以用來向用戶取得授權(quán)憑據(jù)。

為了更好的用戶體驗(yàn),大多數(shù)(連接單一服務(wù)的)app必須為request的delegate實(shí)現(xiàn)authenticationNeededForRequest:方法,或者避免同時(shí)使用代理式授權(quán)。

most apps that connect to a single service should implement authenticationNeededForRequest: in their request delegates, or avoid the use of delegation-style authentication altogether.

但是,會(huì)有一些情況下,為普通的授權(quán)使用ASIHTTPRequest的標(biāo)準(zhǔn)授權(quán)對(duì)話框更好:

  • 你不想創(chuàng)建你自己的登錄表單
  • 你可能需要從外部資源獲取數(shù)據(jù),但是你不清楚你需不需要進(jìn)行授權(quán)

對(duì)于這些情況,為request設(shè)置shouldPresentAuthenticationDialog為YES,此時(shí),如果你的代理沒有實(shí)現(xiàn)

authenticationNeededForRequest:方法,那么用戶將會(huì)看到這個(gè)對(duì)話框。

一次同時(shí)只有一個(gè)對(duì)話框可以顯示出來,所以當(dāng)一個(gè)對(duì)話框顯示時(shí),所有其他需要授權(quán)的request將會(huì)暫停。如果提供了一個(gè)憑據(jù),當(dāng)前進(jìn)程中所有其他的request將會(huì)假定這個(gè)憑據(jù)對(duì)這個(gè)URL有效,并嘗試重用這個(gè)憑據(jù)。如果delegate取消了授權(quán),并且隊(duì)列的shouldCancelAllRequestsOnFailure值為YES,所有其他的request都將被取消(它們也不會(huì)嘗試請(qǐng)求憑據(jù))。

對(duì)于同步請(qǐng)求的request,授權(quán)對(duì)話框不會(huì)顯示出來。

這個(gè)對(duì)話框部分模仿了iPhone上Safari使用的授權(quán)對(duì)話框,它包含以下內(nèi)容:

  • 一段信息來說明這些憑據(jù)是用于websever(而非一個(gè)proxy)
  • 你將要連接到服務(wù)器的主機(jī)名或者IP
  • 授權(quán)域(如果提供的話)
  • 填寫用戶名和密碼的區(qū)域
  • 當(dāng)連接到NTLM授權(quán)模式的服務(wù)器時(shí),還會(huì)包含一個(gè)填寫domain的區(qū)域
  • 一個(gè)說明信息,指明憑據(jù)是否將會(huì)被以明文方式發(fā)送(例如:“只有當(dāng)使用基于非SSL的基本授權(quán)模式時(shí)才會(huì)以明文方式發(fā)送”)

如果你想改變它的外觀,你必須繼承ASIHTTPRequest,并重寫showAuthenticationDialog來顯示你自己的對(duì)話框或ASIAuthenticationDialog子類。

在服務(wù)器請(qǐng)求憑據(jù)前向服務(wù)器發(fā)送憑據(jù)

IMPORTANT

從1.8.1開始,使用基本授權(quán)模式的request時(shí),這個(gè)特性的行為改變了。你可能需要修改你的代碼。

在第一次生成request時(shí),ASIHTTPRequest可以先向服務(wù)器發(fā)送憑據(jù)(如果有的話),而不是等服務(wù)器要求提供憑據(jù)時(shí)才提供憑據(jù)。這個(gè)特性可以提高使用授權(quán)的程序的執(zhí)行效率,因?yàn)檫@個(gè)特性避免了多余的request。

對(duì)于基本授權(quán)模式,要觸發(fā)這個(gè)行為,你必須手動(dòng)設(shè)置request的authenticationScheme為kCFHTTPAuthenticationSchemeBasic:

  1. [request setAuthenticationScheme:(NSString *)kCFHTTPAuthenticationSchemeBasic]; 

對(duì)于其他授權(quán)方案,憑據(jù)也可以在服務(wù)器要求之前被發(fā)送,但是僅當(dāng)有另一個(gè)request成功授權(quán)之后才行。

在以下情況下,你也許想要禁用這個(gè)特性:

  • 你的程序可能會(huì)一次使用一系列憑據(jù)來與服務(wù)器對(duì)話
  • 安全性對(duì)于你的程序來說非常重要。使用這個(gè)特性是相對(duì)不安全的,因?yàn)槟悴荒茉趹{據(jù)被發(fā)送前驗(yàn)證你是否連接到了正確的服務(wù)器。

要禁用這個(gè)特性,這樣做:

  1. [request setShouldPresentCredentialsBeforeChallenge:NO];
責(zé)任編輯:閆佳明 來源: dreamingwish
相關(guān)推薦

2010-09-06 11:24:47

CHAP驗(yàn)證PPP身份驗(yàn)證

2012-04-10 09:36:58

2011-02-21 10:54:45

2025-04-25 07:00:00

身份驗(yàn)證CISO無密碼

2010-07-17 00:57:52

Telnet身份驗(yàn)證

2010-11-30 15:31:38

SharePoint Kerberos

2010-11-03 16:07:38

DB2身份驗(yàn)證

2021-07-19 10:10:15

身份驗(yàn)證漏洞Windows Hel

2013-07-22 14:38:00

iOS開發(fā)ASIHTTPRequ

2013-07-21 18:22:59

iOS開發(fā)ASIHTTPRequ

2013-07-21 18:27:15

iOS開發(fā)ASIHTTPRequ

2013-07-21 18:18:00

iOS開發(fā)ASIHttpRequ

2012-10-23 16:12:35

2011-05-10 09:09:36

身份驗(yàn)證HID Global

2015-01-28 10:00:49

2024-02-02 08:56:54

2021-08-30 14:23:41

身份驗(yàn)證隱私管理網(wǎng)絡(luò)安全

2018-10-23 15:31:12

2022-10-31 10:00:00

2009-07-29 12:55:44

ASP.NET身份驗(yàn)證
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)