2012-10-31 20 views
5

Tôi có một ứng dụng web được xây dựng bằng Django. Nó hoạt động tốt để sử dụng trên web, nhưng bây giờ tôi đang xây dựng một ứng dụng Android. Tôi không chắc chắn làm thế nào để đi về xác thực các ứng dụng Android các phụ trợ Django, an toàn.Xác thực ứng dụng Android hoặc iPhone với phụ trợ Django

Ứng dụng web này có hồ sơ người dùng. Người dùng có thể đăng ký/đăng nhập/đăng xuất bằng giao diện web. Phần liên quan của urls.py trông như thế này:

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

hiểu biết của tôi là sau khi người dùng hoàn thành công accounts/login có một số cookie sẽ đọng lại trên trình duyệt được sử dụng cho phần còn lại của các kết nối. Điều này có đúng không?

Khi ở trên thiết bị Android, được cung cấp tên người dùng và mật khẩu, cách thích hợp hoặc tốt nhất để xác thực người dùng với phụ trợ Django là gì? Tôi có cần lấy cookie như trong trình duyệt hoặc có cách nào tốt hơn không?

Trả lời

6

Có một vài cách bạn có thể thực hiện xác thực, nhưng sử dụng hỗ trợ phiên Django hiện có và cookie mà nó sử dụng có lẽ là cách tốt nhất.

Khi bạn kết nối với trang Django có kích hoạt Session Middleware (bạn cần đăng nhập), nó sẽ đặt cookie phiên (thường được gọi là 'sessionid', mặc dù you can customise that). Trạng thái đăng nhập của người dùng (không) được lưu trữ phía máy chủ trong phiên được liên kết theo id phiên này (trừ khi bạn đang sử dụng cookie-based sessions nhưng đó là một mục cho bài đăng khác).

Vì vậy, ứng dụng Android của bạn chỉ có thể nhận được trang đăng nhập, cá ra các sessionid (và csrftoken) cookie và sau đó tạo một bài đăng với tên người dùng, mật khẩu, sessionid và csrftoken.

Đó là cách dễ dàng. Có nhiều tùy chọn phức tạp hơn, chủ yếu liên quan đến việc tạo chế độ xem tùy chỉnh kích hoạt trở lại JSON và thường bắt đầu cung cấp API cho ứng dụng dành cho thiết bị di động của bạn thay vì khiến chúng giả vờ là trình duyệt, nhưng điều đó phức tạp hơn ở phía Django.

Các vấn đề liên quan