Sto sviluppando un'applicazione iOS (utilizzando AFNetworking 2, AFURLSessionManager) in cui devo interagire con un'API che non controllo (che utilizza Symfony PHP quadro se ciò fa differenza).- Come implementare l'aggiornamento automatico dei cookie di sessione tramite AFNetworking 2
Il problema è questo: l'utente ha un account. Al primo avvio dell'applicazione, l'utente ottiene una schermata di accesso basata su moduli. Si collegano, quindi ricevono un cookie di sessione. Il cookie scade tra 30 minuti. Si rinnoverà su ogni chiamata effettuata dal cliente. TUTTAVIA, se l'app viene riavviata, il cookie viene eliminato e se l'app è inattiva per più di 30 minuti, il cookie non sarà più valido.
Ho più difficoltà qui. Prima di tutto, ho bisogno di effettuare la chiamata di accesso in modo trasparente, in modo che l'utente non debba effettuare nuovamente il login. Quindi ottengo la risposta all'errore e faccio la richiesta di accesso e, in caso di successo, rifaccio la richiesta originale. Il problema è che potrebbero verificarsi diverse richieste simultanee e associarle alla natura inaffidabile delle connessioni di rete mobile. Quindi, ciò che accade con questa logica sembra un incubo di accessi e tentativi multipli e un sacco di codice in più e gestione degli errori.
La mia soluzione finora è questa: Effettua una richiesta. Se ricevo una risposta di errore non autorizzata, aggiungi la richiesta a una coda tentativi (che gestisco personalmente), imposta un flag di accesso e inoltra la richiesta di accesso. Eventuali nuove richieste in arrivo controllano prima il flag di login, per vedere se c'è un login in corso. Se è così, vanno direttamente alla coda dei tentativi. Una volta completata la richiesta di accesso, passo alla coda dei tentativi e faccio tutte le richieste in coda.
Finora, sembra funzionare abbastanza bene. MA, ho questa sensazione fastidiosa che ci deve essere un modo migliore. Non ci sono meccanismi integrati per affrontare questo tipo di situazione? Sembra un modo comune per gestire l'autenticazione dell'utente, ma non riesco a trovare alcuna documentazione su come gestirlo in AFNetworking. Coprono l'autenticazione di base e Digest ma nulla su questa autenticazione cookie di sessione basata su modulo. Questa è la prima volta che devo affrontare questo problema e non riesco a credere che nessun altro abbia avuto lo stesso identico problema. Qualche idea?
Stesso problema/domanda qui, mi piacerebbe per AFNetworking di avere una sorta di blocco "nuovo login" in il responsabile delle operazioni o qualcosa del genere. – StijnSpijker
Questo potrebbe essere utile - http://stackoverflow.com/a/24778719/900024 –
Verificherò questo aspetto Pratik questo sembra promettente – d370urn3ur