残りのAPIを使用してdjangoサイトで認証する角型アプリケーションを作っています。適切であり得る二つの異なるエラーコードが存在する未認証の要求が許可を拒否されDjango Restフレームワークの認証エラー
を:DRFのDOCそれらは次のように拒否されたユーザ認証は、2つのエラー、HTTP 401とHTTP 403をもたらすであろうと述べています。 Howenever、私はいくつかのダミーデータを使用して認証しようとすると、それは意図的に間違っている
を拒否されました
- HTTP 401不正なHTTP 403許可は、私はエラー応答HTTP 400を取得するとと
non_field_errors
。ここの問題は何ですか?まず、ユーザトークンを取得するためにユーザ名とパスワードを使用して単純な認証を行います。これはサイトの他の操作で必要になります。
私はあなたが以下のそれを見ることができ、expering認証トークンを取得するための方法を使用しています:
クラスObtainExperingAuthToken(ObtainAuthToken): デフ(自己、要求、* argsを、** kargs)を投稿: シリアライザ= self.serializer_class(データ= request.data)
if serializer.is_valid(): print serializer user = UserProfile.objects.get(email=serializer.data['username']) token, created = Token.objects.get_or_create(user=user) utc_now = timezone.now() if not created and token.created < utc_now - datetime.timedelta(hours=24): token.delete() print serializer.data token = Token.objects.create(user=serializer.data['user']) token.created = datetime.datetime.utcnow() token.save() groups = [group.name for group in user.groups.all()] response_data = { 'email': user.email, 'token': token.key, 'groups': groups } return HttpResponse(json.dumps(response_data), content_type='application/json') return HttpResponse(serializer.errors, status=400)
@Edit
値REST_FRAMEWORK
申し訳ありませんが、私はそれを明確にします。私はユーザーアクセストークンを提供していません、私はバックエンドとのアクセストークンを提供する必要があるエンドポイントに間違ったユーザー名とパスワードを提供していますので、提供データでユーザーを認証できます。 UnathourizedまたはForbbidenを受け取ることを期待していましたが、代わりにBad Requestを受け取りました。私は 'REST_FRAMEWORK'値で質問を編集します。 –