2016-09-23 27 views
-1

django-rest-framekworkのデフォルトauthencationsにAuthencationを追加し、api-guideに文書化されているようにエラーが発生した場合にAuthenticationFailedを発生させます。それはAuthenticationFailedの例外がスローされたと言って500応答を返しますが、documentに従って401または403の応答を返さなければなりません。django-rest-framework raise AuthencationFailed原因500レスポンス

ソースを確認します。この例外を捕捉し、Request._authenticate()で再発生させ、再び捕捉することはありません。

私に何か不足していますか?

私はDjango 1.7とdjango-rest-framework 3.3.3を使用しています。

コードは、あなたが想像できるほど単純です:

class CustomAuthentication(authentication.BaseAuthentication): 
    def authenticate(self, request): 
     raise exceptions.AuthenticationFailed 

と設定で:

遅れて申し訳ありません
def initialize_request(self, request, *args, **kwargs): 
    _request = super(TheViewSet, self).initialize_request(
     request, *args, **kwargs) 
    return _request 

:に置き換え

REST_FRAMEWORK = { 
    'DEFAULT_AUTHENTICATION_CLASSES': [ 
     'rest_framework.authentication.BasicAuthentication', 
     'rest_framework.authentication.SessionAuthentication', 
     'path.to.CustomAuthentication', 
    ], 
} 
+0

どのように認証されているのか、間違っている可能性があるのか​​についてのヒントを示すコードを入力してください。 –

+0

私の認証方法は何もありません。私は、500応答の代わりに401または403応答のみを必要とします。 –

+0

質問を更新していただきありがとうございます。あなたが認証しているビューも共有していただけますか? –

答えて

0
def initialize_request(self, request, *args, **kwargs): 
    request = super(TheViewSet, self).initialize_request(
     request, *args, **kwargs) 
    return request 

。私は最近休暇を取って旅行をしました。私はまだそれがどのように問題を引き起こすのか分からない。

+0

問題が解決されたように見える、あなたのために幸せ:-) –

関連する問題