2015-01-17 12 views
7

Mam aplikację na iOS, która używa interfejsu API opartego na strukturze REST Django do przechowywania, aktualizowania i pobierania danych z bazy danych. Muszę dostarczyć dwie kolejne następujące funkcjonalności, która przechowuje dane użytkownika na serwerze:Jakie uwierzytelnienie należy zastosować podczas korzystania z aplikacji Django Rest Framework i aplikacji IOS?

  1. Logowanie przez Email
  2. Logowanie przez Facebook

wydaje się być dwa różne systemy uwierzytelniania, że ​​mogę zastosowanie:

  1. Django User Authentication System
  2. Django Rest Framework Authentication

Jak powinienem sobie z tym poradzić w moim API?

+0

użyj Django Rest Framework Authentication – Anentropic

+0

Dzięki! Uwierzytelnianie DRF jest dość łatwe, a następnie uwierzytelnianie użytkownika Django. Łatwy do nauczenia :) –

Odpowiedz

13

Podczas korzystania z frameworku Django REST z iOS, o ile nie korzystasz z przeglądarki, standardowy system uwierzytelniania Django nie wchodzi w grę. Zostało to ujawnione poprzez DRF authentication system as SessionAuthentication i polega na tym, że aplikacja może przesłać pliki cookie i token CSRF z żądaniem, co zazwyczaj nie jest możliwe.

W większości sytuacji gdzie używasz systemu uwierzytelniania Django już i można ufać swoim aplikacja przechowywania haseł, byś use something like BasicAuthentiction. Większość ludzi nie może lub nie wierzy w swój ekosystem aplikacji, więc używa systemu uwierzytelniania opartego na tokenie like TokenAuthentication lub OAuth2Authorization (w połączeniu with an OAuth provider). Więcej informacji o każdym typie uwierzytelniania można znaleźć na stronie in this answer on Stack Overflow.

Ale w sytuacji, to w zasadzie ogranicza się tylko przy użyciu coś podobnego OAuth 2. Dzieje się tak dlatego, że musisz powiązać użytkownika z tokenem, a większość systemów uwierzytelniania wymaga podania nazwy użytkownika i hasła. W przypadku kont społecznościowych zwykle tak nie jest i zazwyczaj nie mogliby się zalogować. OAuth 2 działa w połączeniu ze standardowym loginem Django, więc nie ogranicza się tylko do nazwy użytkownika i hasła. Napisałem więcej o tym, jak to działa w this detailed Stack Overflow answer.

+0

Thanx! Pomogło :) –

Powiązane problemy