3

저는 클라이언트 환경이 모바일 장치 인 DRF와 Angular를 사용하고 있습니다.Django REST 프레임 워크의 토큰 인증 + 각도 프로젝트

나는 django-rest-auth 패키지를 발견했습니다.

모바일 클라이언트에 적합한 TokenAuthentication 기능을 제공하기 때문에 주저하지 않았습니다.

로그인 요청을 보내면 클라이언트는 토큰을받습니다.

enter image description here 그런 다음 요청 성공 콜백에 벨로우즈를 추가했습니다. 서버의 콘솔에서

login: function(username, password) { 
     return $http.post('http://192.168.0.3:8000/rest-auth/login/', { 
      'username':username, 
      'password':password, 
     }).success(function(data) { 
      $http.defaults.headers.common.Authorization = 'Token ' + data.key; 
      Account.authenticated = true; 
      console.log("login success", data) 
     }) 

, 들어오는 요청에 대한 출력은 우는 소리를

'HTTP_AUTHORIZATION': 'Token 3fae470d169adb550e538c99a754fcfbe3485f75'

이다, 나는 다음과 같은 예기치 않은 결과를 보았다 :

request.user AnonymousUser 
request.auth None 

따르면 here에, 만약 토큰과 함께 요청을 보내면 추가 인증 작업은 자체적으로 처리됩니다.

완전한 인증을 위해 다른 코드를 추가해야합니까?

(예. 장고의 세션 저장소에 토큰을 등록합니다.) 나는 당신의 조언을 듣고 싶습니다

. 원인

답변

2
나는이 문제에 대한 해결

은 단지 바보 같은 실수

난 당신이 TokenAuthentication를 포함 configure the authentication classes하는 데 필요한 TokenAuthentication 방식을 사용하려면 reference documents.

신중하게 보이지 않았다이다 INSTALLED_APPS 설정에 rest_framework.authtoken을 추가로 포함하십시오.

그래서 settings.py에서 구성을 추가했습니다. I는 다음과 같이 "GET", 단말기 본체의 출력을 요청하면

REST_FRAMEWORK = { 
    'DEFAULT_AUTHENTICATION_CLASSES': (
     'rest_framework.authentication.BasicAuthentication', 
     'rest_framework.authentication.SessionAuthentication', 

     # I add this config 
     'rest_framework.authentication.TokenAuthentication', 
    ) 
} 

후 후, 서버에 로그인 요청을 발송 단말기.

request.user admin

request.auth 626ba4b1357cb472fc4bb0c58afb026cf21dd175

관련 문제