AFNetworking 2.0: las cnetworkingenciales no se envían a la authentication dentro de los 30 segundos de la request anterior.

Estoy usando AFHTTPRequestOperationManager para get algunos datos de nuestro server. El server usa la authentication básica.

Cuando el usuario inicia session en nuestra aplicación, configuro las cnetworkingenciales de esta manera:

 manager.cnetworkingential = [NSURLCnetworkingential cnetworkingentialWithUser:username password:password persistence:NSURLCnetworkingentialPersistenceForSession]; 

Y luego hago una request así:

 [manager GET:address parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { // ... } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // ... }]; 

Cuando hago la request la connection:willSendRequestForAuthenticationChallenge: del método connection:willSendRequestForAuthenticationChallenge: se llama a NSURLConnectionDelegate (el método se implementa en AFURLConnectionOperation ).

Cuando el usuario se desconecta de la aplicación y vuelve a iniciar session, configuro las cnetworkingenciales nuevamente desde la input del usuario. Sin embargo, si esto ocurre dentro de los 30 segundos de la request previa correcta, las cnetworkingenciales no se envían a la authentication ( connection:willSendRequestForAuthenticationChallenge: no se llama). Esto significa que el usuario puede desconectarse y aparentemente iniciar session, incluso si las nuevas cnetworkingenciales son incorrectas, ya que nunca se verifican.

Si espero al less 30 segundos, no parece haber ningún problema (es decir, las cnetworkingenciales están marcadas y obtengo un error 401).

¿Necesito borrar las cnetworkingenciales de alguna manera cuando el usuario está desconectando o estoy haciendo todo mal?

Tuve el mismo problema y descubrí que hay una connection con el método AFHTTPRequestOperationManager de AFNetworking shouldUseCnetworkingentialStorage, que por defecto es YES .
Y como no encontré una forma de borrar las cnetworkingenciales al cerrar session, lo que hago ahora es deshabilitar totalmente el cnetworkingentialStorage así:

 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.shouldUseCnetworkingentialStorage = NO; 

No estoy seguro si esa es la mejor solución posible pero funciona para mí.