2012-11-25 14 views
5

AFNetworking supporta l'autenticazione NTLM?AFNetworking supporta l'autenticazione NTLM?

So che ASIHTTPRequest può farlo, sto provando a migrare ad AFNetworking, ma devo essere sicuro che sarà in grado di gestirlo.

Ho cercato veramente Internet per questo, ma non sono riuscito a trovare questa risposta esatta.

Grazie a tutti.

+0

possibile duplicazione di [AFNetworking NTLM Authentication?] (Http://stackoverflow.com/questions/12483465/afnetworking-ntlm-authentication) –

risposta

6

Sì, AFNetworking supporta l'autenticazione NTLM (o praticamente qualsiasi metodo di autenticazione) fornendo una risposta basata su blocchi alle sfide di autenticazione in generale.

Ecco un esempio di codice (supponendo che operation sia un AFHTTPRequestOperation, AFJSONRequestOperation ecc.). Prima di avviare l'operazione di impostare il blocco di richiesta di autenticazione in questo modo:

[operation setAuthenticationChallengeBlock: 
^(NSURLConnection* connection, NSURLAuthenticationChallenge* challenge) 
{ 
    if([[challenge protectionSpace] authenticationMethod] == NSURLAuthenticationMethodNTLM) 
    { 
     if([challenge previousFailureCount] > 0) 
     { 
     // Avoid too many failed authentication attempts which could lock out the user 
     [[challenge sender] cancelAuthenticationChallenge:challenge]; 
     } 
     else 
     { 
     [[challenge sender] useCredential:[NSURLCredential credentialWithUser:@"username" password:@"password" persistence:NSURLCredentialPersistenceForSession] forAuthenticationChallenge:challenge]; 
     } 
    } 
    else 
    { 
     // Authenticate in other ways than NTLM if desired or cancel the auth like this: 
     [[challenge sender] cancelAuthenticationChallenge:challenge]; 
    } 
}]; 

Start o Enqueue l'operazione come al solito e che dovrebbe fare il trucco.

Questo è in pratica il metodo Wayne Hartman describes in his blog applicato a AFNetworking.

+0

Grazie signore, non sapevo che avrei potuto passare un blocco per occuparmi di autenticazione! Ho intenzione di provarlo presto, ma nel mio progetto ho finito di fare una piccola libreria su ASIHTTPRequest che utilizza la sintassi del blocco, questo è quello che stavo cercando =) –

+0

Iniziato usando il tuo approccio, funziona molto bene! Grazie signore =) –

+0

Hmm, setAuthenticationChallengeBlock sembra essere una proprietà di un'operazione di connessione, non un'operazione di richiesta. – fizgig