2013-11-21 41 views
4

我在使用HTTP令牌驗證與NSMutableURLRequest時遇到了一些問題。我已經做了一些研究並使用了以下問題:ios managing authentication tokens from NSURLRequest/HTTP request瞭解如何在HTTP標頭中設置令牌。然而,我需要設置的令牌不僅僅是一個帶有值的簡單標題字段。我需要設置一個http頭域(或多個),如下所示:Authorization: Token token="tokenHere", nonce="def"。在下面的代碼片段是失敗的事情,我已經試過的例子:IOS - 使用NSURLRequest的HTTP標頭中的令牌驗證

//failed to authenticate with server 
[request setValue:@"tokenHere" forHTTPHeaderField:@"token"]; 
[request setValue:@"def" forHTTPHeaderField:@"nonce"]; 

//failed as well 
NSDictionary *authToken = [NSDictionary dictionaryWithObjectsAndKeys: 
          @"tokenHere", @"token", 
          @"def", @"nonce", 
          nil]; 

[request setValue:[NSString stringWithFormat:@"Token %@", authToken] forHTTPHeaderField:@"Authorization"]; 

//failed again 
[request setValue:@"Authorization: Token token='tokenHere', nonce='def'" forHTTPHeaderField:@"Authorization"]; 

後端服務器在紅寶石編程,並期待一個頭,看起來就像上面的例子。我需要一些幫助來設計價值,以便它能夠與後端一起工作。

回答

7

這只是一個猜測,因爲正確的答案完全取決於服務器的期望;但是,使用其他身份驗證方案作爲模型,頭會是這個樣子:

NSString *authHeader = [NSString stringWithFormat:@"token=\"%@\", nonce=\"%@\"", @"tokenHere", @"def"]; 
[myMutableRequest setValue:authHeader forHTTPHeaderField:@"Authorization"]; 

換句話說,報頭字段的名稱是「授權」,它的值是逗號分隔的name = value對。您的規範是沒有意義的唯一部分是「令牌」的額外提到,在

...令牌令牌= ...

+0

原來,我需要轉義雙引號並擺脫「Authentication:」適當的請求看起來像:'[request setValue:@「Token token = \」tokenHere \「,nonce = \」def \「」forHTTPHeaderField:@「Authorization」]; ' – ScottOBot