2016-10-20 17 views
0

トークン認証付きのDjango Rest Frameworkがあります。私はトークンを返す次のURL url(r'^api/auth/', views.obtain_auth_token),を持っています。DRF - 拡張認証トークンを取得

私がする必要があるのは、ユーザーがトークンを取得している認証を実行するときにdbロジックを実行することです。私はdbをクエリし、そこにいくつかのものを行う必要があります。

私は何とかデフォルト動作を変更し、カスタムロジックをobtain_auth_tokenに追加しているようです。

どうすればいいですか?

答えて

1

Rest FrameworkのObtainAuthTokenは、特定のユーザーのトークンを取得または作成してからResponseに送信します。これらの動作はすべてpostメソッドで行われます。

ドキュメントは言う:

あなたがobtain_auth_tokenビューのカスタマイズされたバージョンが必要な場合は、ObtainAuthTokenビュークラスをオーバーライドし、代わりにあなたのURL confの中でこれを使用することによって行うことができます。

したがって、postメソッドをオーバーライドすることも、独自のAPIViewを作成してトークンを作成して、必要な動作を追加することもできます。そのためには、あなたのURLを変更します。

url(r'^api/auth/', views.custom_obtain_token) 

そしてviews.py中:

class CustomObtainToken(APIView): 
    ... 
    def post(self, request): 
     <your logic> 
     <get token n your own way or using DRF way> 
     return Response({'token': token}) 
custom_obtain_token = CustomObtainToken.as_view() 
+0

を申し訳ありませんが、あなたはトークンDRFの道を作成する方法を、明確にしてくださいすることができますか? –

+0

シリアライザを検証して、ユーザが存在すること、または認証されたことを検証した後、 'token = created。Token.objects.get_or_create(user = user)'を実行できます。これがDRFのやり方です。 'Token'はモデルであり、' rest_framework.authtoken.models'からインポートすることができます – user3080294

+0

シリアライザを検証し、そのユーザが存在することを確認するにはどうしたらいいですか?ユーザモデルにquerysetを作成し、ユーザ名.exists()ならchechしますか? –

関連する問題