Django Restframeworkを使用しているサイトに対してトークン認証を設定しているため、ユーザーにトークンをダウンロードさせる必要がありますが、トークンを一度ダウンロードすることができます(Amazon AWSモデルに似ています)。ユーザーがDjango Restframeworkでトークンを割り当てられているかどうかを確認する
つまり、ユーザーにレストフレームワークのトークンが割り当てられているかどうかを確認するネイティブな方法はありますか?
あなたがこれを行うことができますDjango Restframeworkを使用しているサイトに対してトークン認証を設定しているため、ユーザーにトークンをダウンロードさせる必要がありますが、トークンを一度ダウンロードすることができます(Amazon AWSモデルに似ています)。ユーザーがDjango Restframeworkでトークンを割り当てられているかどうかを確認する
つまり、ユーザーにレストフレームワークのトークンが割り当てられているかどうかを確認するネイティブな方法はありますか?
あなたがこれを行うことができます:
: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
データベースに移行されていることを確認してください。
これを確認するには、シェルで実行します。 rest_framework.authtoken.modelsからの インポートトークン。 django.confのインポート設定の 。 #django web adminにトークンを持たないユーザーテストを作成しました。 u = User.objects.get(username = 'test'); user_token = Token.objects.get(user = u); <これは基本的に本質的にキャッチしようとしているDoesNotExistエラーを返します – aeusman
フィルターは完璧に動作します、ありがとう! – aeusman
私は助けてうれしいです –
あなたのモデルファイルにDjangoシグナルを使用して自動的にユーザートークンを作成してみてください。
@receiver(post_save, sender=User)
def create_auth_token(sender, instance=None, created=False, **kwargs):
if created:
Token.objects.create(user=instance)
これまでに何を試みましたか? –
私はドキュメントを突き抜けて、createとget_or_create以外の他のToken.object関数があるかどうか調べましたが、何も見つけられませんでした。ソースダイビングは私に何も与えませんでした。 私の目標は、失敗したトークン認可のためにtry catchブロックを回避して、ネイティブの解決策(try-catchブロックのアプローチでは多すぎる問題がある可能性があります)を優先することです。 – aeusman