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',
],
}
どのように認証されているのか、間違っている可能性があるのかについてのヒントを示すコードを入力してください。 –
私の認証方法は何もありません。私は、500応答の代わりに401または403応答のみを必要とします。 –
質問を更新していただきありがとうございます。あなたが認証しているビューも共有していただけますか? –