2012-02-05 11 views
5

Ho bisogno di creare un'applicazione basata su server (php) con client iOS con autenticazione "login" mechanisim ma non conosco la sessione in iOS. La mia applicazione deve accedere al mio sito Web (sito Web basato su PHP) per ottenere i dati. Non so se la sessione per il client iPhone è keept nel server?Applicazione con gestione delle sessioni lato server

Dettagli:

Dopo aver inviato la richiesta di accesso da iPhone il programma e la mia applicazione web, credo che qui una sessione viene creata nella mia webapp (giusto?), Per quanto riguarda il mio prossimo richiesta? posso accedere alla stessa sessione creata per la prima richiesta .. In un'altra parola: posso condividere i dati nella sessione web (nel server) per essere accessibili in ogni richiesta inviata dal client iOS dopo l'accesso?

+0

App iOS basata su server PHP, non ha senso ... – craig1231

+6

Sì, lo fa - non essere pedante. Ovviamente significa un'app iOS che funge da client che parla con un server back-end scritto in PHP. –

+0

Caro Yahia, grazie per il tuo consiglio, potresti per favore chiarire il tuo commento – Saeed

risposta

18

Le sessioni sono un concetto lato server - non esiste alcuna sessione sul lato client.

Ciò che normalmente accade è che il server imposta un cookie nelle intestazioni di risposta dopo aver effettuato l'accesso e che il cookie contiene l'ID di sessione in modo che nelle richieste successive il server sappia che il client sta utilizzando quella sessione perché corrisponde il biscotto.

I cookie funzionano automaticamente su iOS, quindi non dovresti dover fare nulla. NSURLRequests ha una proprietà HTTPShouldHandleCookies che ha come valore predefinito SÌ, quindi tutto dovrebbe funzionare come impostazione predefinita.

Se non funziona (o se si vuole solo vedere cosa sta succedendo), è possibile accedere ai cookie in iOS utilizzando le API NSHTTPCookieStorage. Dai uno sguardo all'interno di [NSHTTPCookieStorage sharedHTTPCookieStorage], che funziona un po 'come un NSDictionary. È qui che deve essere impostato il cookie di sessione dopo l'accesso.

+0

+1 per la risposta completamente corretta. Solo una aggiunta, la sessione non * deve * essere mantenuta usando i cookie - potrebbe anche essere un parametro get, a seconda della configurazione del server/PHP. – Till

+0

Sì, è vero. Ho deciso di ometterlo dalla risposta per evitare di complicare le cose, ma è un punto valido. –

+0

+1 questo è fantastico, questo è esattamente quello che dovevo leggere anche io, evviva! –

Problemi correlati