2012-10-31 23 views
5

Django ile oluşturulmuş bir web sunucum var. Web'de kullanım için iyi çalışıyor, ancak şimdi bir Android uygulaması oluşturuyorum. Android uygulamasının Django arka ucunu güvenli bir şekilde doğrulamakla ilgili nasıl emin olacağımı bilmiyorum.Bir Android veya iPhone uygulamasını bir Django arka ucuna doğrulamak

Bu webapp'ın kullanıcı profilleri var. Bir kullanıcı web arayüzünü kullanarak kayıt/giriş/çıkış yapabilir. urls.py ilgili kısmı aşağıdaki gibidir:

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

Benim anlayış kullanıcı başarıyla accounts/login tamamlandıktan sonra bağlantı geri kalanı için kullanılan tarayıcı üzerinde bırakılan bazı çerez olmasıdır. Bu doğru mu?

Bir Android cihazında, kullanıcı adı ve parola verildiğinde, kullanıcının Django arka ucuna doğru veya en iyi şekilde kimlik doğrulaması nedir? Çerezleri tarayıcıda olduğu gibi almalı mıyım yoksa daha iyi bir yol var mı?

cevap

6

Kimlik doğrulaması yapmanın birkaç yolu vardır, ancak varolan Django oturum desteğini ve kullandığı çerezleri kullanmak muhtemelen en iyi yoldur.

Session Middleware etkinleştirilmiş (giriş için ihtiyacınız olan) bir Django sayfasına bağlandığınızda, oturum tanımlama bilgisi (genellikle "sessionid" olarak adlandırılır, ancak you can customise that). Oturum açmış olan kullanıcılar (değil), bu oturum kimliğine bağlı bir oturumda sunucu tarafında saklanır (cookie-based sessions'u kullanmıyorsanız, ancak bu başka bir gönderi için bir öğedir).

Yani Android uygulamanız sadece giriş sayfasını, oturumid (ve csrftoken) çerezlerini balık ve daha sonra kullanıcı adı, parola, sessionid ve csrftoken ile bir yazı yazabilir.

Bu kolay yoldur. Çoğunlukla JSON'u tüküren özel bir görünüm oluşturmayı ve genellikle mobil uygulamalarınız için bir API sunmaya başlarken tarayıcılar gibi davranmaya başlamanızı sağlayan daha karmaşık seçenekler var, ancak Django tarafında bu biraz daha karmaşık.

İlgili konular