-1

Je suis en train de configurer l'authentification par jeton pour un site utilisant Django Restframework et je dois pouvoir demander à un utilisateur de télécharger son jeton, mais le problème est qu'il ne peut que télécharger leur jeton une fois (similaire au modèle Amazon AWS).Vérifier si un utilisateur a été assigné un jeton dans Django Restframework

En d'autres termes; existe-t-il un moyen natif de vérifier si un utilisateur a été assigné un jeton dans restframework?

+2

Qu'avez-vous essayé jusqu'à présent? –

+0

J'ai essayé de parcourir la documentation pour voir s'il existe d'autres fonctions Token.object autres que create et get_or_create, mais n'a rien trouvé. La plongée à la source ne m'a rien donné non plus. Mon but est d'éviter un bloc try catch pour une autorisation de jeton échouée en faveur d'une solution native (trop de problèmes possibles avec l'approche du bloc try-catch). – aeusman

Répondre

0

vous pouvez le faire:

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

maintenant vous pouvez simplement vérifier si votre utilisateur donné un jeton:

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

si vous voulez juste voir si l'utilisateur possède un jeton:

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

Si l'entrée existe, cela signifie que l'utilisateur a un jeton qui lui est affecté. Référence: HERE

Suivez la documentation pour vous assurer que votre base de données est migrée.

+0

Donc, pour vérifier cela, je cours dans une coquille; à partir de rest_framework.authtoken.models Importer un jeton; à partir des paramètres d'importation de django.conf; # J'ai créé un test d'utilisateur qui n'a pas de jeton dans l'administrateur Web django; u = User.objects.get (nom d'utilisateur = 'test'); user_token = Token.objects.get (utilisateur = u); aeusman

+0

Le filtre fonctionne parfaitement, merci! – aeusman

+0

je suis heureux d'aider –

0

essayez d'utiliser un signal django pour créer un jeton utilisateur automatiquement, quelque chose comme ceci sur votre fichier de modèles.

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