-1

Django Restframeworkを使用しているサイトに対してトークン認証を設定しているため、ユーザーにトークンをダウンロードさせる必要がありますが、トークンを一度ダウンロードすることができます(Amazon AWSモデルに似ています)。ユーザーがDjango Restframeworkでトークンを割り当てられているかどうかを確認する

つまり、ユーザーにレストフレームワークのトークンが割り当てられているかどうかを確認するネイティブな方法はありますか?

あなたがこれを行うことができます
+2

これまでに何を試みましたか? –

+0

私はドキュメントを突き抜けて、createとget_or_create以外の他のToken.object関数があるかどうか調べましたが、何も見つけられませんでした。ソースダイビングは私に何も与えませんでした。 私の目標は、失敗したトークン認可のためにtry catchブロックを回避して、ネイティブの解決策(try-catchブロックのアプローチでは多すぎる問題がある可能性があります)を優先することです。 – aeusman

答えて

0

user_with_token = Token.objects.get(user=user) 

ユーザーがトークンを持っている場合は、単にたいを参照してください場合:あなたの指定したユーザーがトークンを持っている場合

from rest_framework.authtoken.models import Token 
from django.conf import settings 
token = Token.objects.create(user=settings.AUTH_USER_MODEL) 

今あなただけ確認することができますが

is_tokened = Token.objects.filter(user=user).exist() # Returns a boolean 

エントリが存在する場合は、ユーザーにトークンが割り当てられていることを意味します。 参照:HERE

データベースに移行されていることを確認してください。

+0

これを確認するには、シェルで実行します。 rest_framework.authtoken.modelsからの インポートトークン。 django.confのインポート設定の 。 #django web adminにトークンを持たないユーザーテストを作成しました。 u = User.objects.get(username = 'test'); user_token = Token.objects.get(user = u); <これは基本的に本質的にキャッチしようとしているDoesNotExistエラーを返します – aeusman

+0

フィルターは完璧に動作します、ありがとう! – aeusman

+0

私は助けてうれしいです –

0

あなたのモデルファイルにDjangoシグナルを使用して自動的にユーザートークンを作成してみてください。

@receiver(post_save, sender=User) 
def create_auth_token(sender, instance=None, created=False, **kwargs): 
if created: 
    Token.objects.create(user=instance) 
関連する問題