私はこれをほぼ3〜4日間手にしました。Django restフレームワークのカスタム認証クラスからカスタムレスポンスオブジェクトを返す方法
状況を説明しましょう。私は、カスタム認証クラスを持つDRF(Django REST Framework)クラスベースのビューを持っています。あなたが理解する限り、DRFのBaseAuthenticationクラスのauthenticateメソッドをオーバーライドして独自の認証を実装できますが、認証が失敗した場合はDRFから提供される事前定義された例外のみを呼び出すことができます。
私の問題は、カスタムレスポンスを返す方法を見つけることです。キャプチャHTMLを認証クラスから直接フロントエンドに送り、私の見解では認証関連のコードがないようにします。
私の状況をよりよく理解するために、私は以下の擬似コードを提供しています。
class ExampleView(APIView):
authentication_classes = (ExampleCustomAuth,)
def get(self, request):
pass
これはビューであり、この部分はまったく問題ありません。
class ExampleCustomAuth(BaseAuthentication):
def authenticate(self, request):
req = request
request = req._request
{
This part of code decides if its required for a
captcha or not
}
if captcha_required:
response = HttpResponse()
response.status_code = 401
response['WWW-Authenticate'] = 'Captcha" id="%s"'% (id)
response.content = loader.render_to_string('captcha.html')
return response # This is where it goes wrong
私は、ここから回答を返すことはできません。
私は誰かがこれを回避する方法を考えたことを願っています。
ありがとうございます!