2014-02-14 6 views
1

여기에 설명 된대로 django-rest-framework 및 기본 사용자/그룹 api를 설정했습니다 : http://www.django-rest-framework.org/. api를 통해 사용자와 그룹을 볼 수는 있지만 로그인 할 수는 없습니다./api-auth/login 페이지가 있으며 & passwd를 삽입하고 전송하면 모든 렌더링 된 메시지없이 동일한 페이지로 리디렉션됩니다. 나는 내가 무엇을 놓치고 있는지 궁금해. API에 어떻게 로그인 할 수 있습니까?django-rest-framework 빠른 시작 : API에 로그인

답변

0

:

# settings.py 
AUTHENTICATION_BACKENDS = (
    'web.auth_backends.EmailAuthBackend', 
) 

# auth_backends.py 
class EmailAuthBackend(object): 
    def authenticate(self, email=None, password=None): 
     try: 
      user = User.objects.get(email__iexact=email) 
      if user.check_password(password): 
       return user 
     except User.DoesNotExist: 
      return None 

    def get_user(self, user_id): 
     try: 
      return User.objects.get(pk=user_id) 
     except User.DoesNotExist: 
      return None 

기본적으로 키워드 "이름을"전달되는되었지만 대신에 "이메일"을 받아 들였다. 그래서 django의 contrib.auth.authentificate에서 catch 된 예외가 발생하고 사용자가 로그인 할 수 없었습니다. "username"대신 "email"을 사용하여 해결했습니다.

+0

솔루션을 찾은 경우 이것을 답변으로 표시해야합니다. – SlackOverflow

1

장고 휴식 프레임 워크는 다양한 인증 방법을 지원합니다./api-auth /가 무엇을 의미하는지 확신 할 수 없습니다. 이 프레임 워크에는 그러한 표준 URL이 없습니다. 가능한 인증 방법과 수행 방법을 보려면 documentation을 확인하십시오. 그것은 사용자 정의 인증 백엔드를 사용하는 나에 의해 발생 된

+0

질문에 제공된 링크로 가서 'api-auth'를 검색하면 내가 무엇을 의미하는지 확인할 수 있습니다. 어쨌든 내 잘못으로 인증 백엔드를 잘못 교체 한 것입니다. – clime

+0

글쎄, 나는 검색을했다. 내가 제공 한 링크에는 API 인증이 없습니다. 뿐만 아니라, 장고 - 나머지 - 프레임 워크의 소스 코드에 api-auth가 없다는 것만 제외하면 (내가 처음에 확인한 것) – Aldarund

+0

이상한데 이것은 URL http : //www.django-rest-framework입니다. .org /와이 단락을 찾을 수 있습니다. _ 탐색 가능한 API를 사용하려는 경우 REST 프레임 워크의 로그인 및 로그 아웃보기를 추가하는 것이 좋습니다. 루트 urls.py 파일에 다음을 추가하십시오 ._ 'urlpatterns = patterns ('', ... url ('rest_framework.urls', namespace = 'rest_framework ')) )' – clime