2012-10-31 13 views
5

Ho una webapp che è stata creata con Django. Funziona bene per l'uso sul web, ma ora sto costruendo un'app per Android. Non sono sicuro di come fare per autenticare l'app per Android il backend Django, in modo sicuro.Autenticazione di un'app per Android o iPhone su un backend Django

Questa webapp ha profili utente. Un utente può registrarsi/accedere/uscire utilizzando l'interfaccia web. La parte rilevante della urls.py assomiglia a questo:

urlpatterns += patterns('', 
    url(r'^accounts/login/$', 'django.contrib.auth.views.login', name='login'), 
    url(r'^accounts/logout/$', 'django.contrib.auth.views.logout', name="logout"), 
) 

La mia comprensione è che dopo l'utente ha completato con successo accounts/login c'è qualche biscotto depositato sul browser che viene utilizzato per il resto delle connessioni. È corretto?

Quando su un dispositivo Android, dato un nome utente e una password, qual è il modo corretto o migliore per autenticare l'utente sul backend Django? Devo ottenere il cookie come nel browser o c'è un modo migliore?

risposta

6

Ci sono un paio di modi in cui è possibile eseguire l'autenticazione, ma utilizzando il supporto per la sessione Django esistente e i cookie che utilizza è probabilmente il modo migliore.

Quando ci si collega a una pagina Django con il Session Middleware attivato (che è necessario per l'accesso) verrà impostato un cookie di sessione (generalmente chiamato 'sessionid', anche se you can customise that). Lo stato degli utenti (non) registrati è memorizzato sul lato server in una sessione collegata da questo ID di sessione (a meno che non si stia utilizzando lo cookie-based sessions ma si tratti di un articolo per un altro post).

Così la tua app per Android può solo ottenere la pagina di accesso, pescare i cookie di sessione (e csrftoken) e quindi creare un post con nome utente, password, sessionid e csrftoken.

Questo è il modo semplice. Esistono opzioni più complesse, che implicano principalmente la creazione di una visualizzazione personalizzata che sputa indietro JSON e generalmente inizia a fornire un'API per le tue app mobili anziché farle fingere che siano browser, ma è un po 'più complesso dal lato Django.

Problemi correlati