Ho un servizio Django riposo di base, cheCome posso rendere il token di ritorno django-rest-framework-jwt alla registrazione?
- registra una persona e
- aggiorna la sua password.
Voglio aggiungere l'autenticazione jwt su di esso. Se seguo il tutorial, dovrei aggiungere un nuovo url chiamato "api-token-auth" nel progetto urls.py. Ma, non voglio aggiungere questo nuovo url e voglio che la mia chiamata di registro invii un token in risposta.
Ecco il mio codice:
serializers.py
class UserSerializer(serializers.HyperlinkedModelSerializer):
def create(self, validated_data):
user = User(
username=validated_data['username']
)
user.set_password(validated_data['password'])
user.save()
return user
def update(self, instance, validated_data):
instance.set_password(validated_data['password'])
instance.save()
return instance
class Meta:
model = User
fields = ('url', 'username', 'password')
lookup_field = 'username'
write_only_fields = ('password',)
views.py
class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = User.objects.exclude(is_superuser=1)
serializer_class = UserSerializer
lookup_field = 'username'
- Che cosa dovrebbe essere fatto per raggiungere questo obiettivo? dovrei chiamare api-auth-token all'interno del metodo di creazione del mio serializzatore?
- In che modo django-rest-framework-jwt gestisce più token di autenticazione e identifica correttamente quale token appartiene a quale utente? Soprattutto quando non memorizza i token in un db.
- Come posso utilizzare questo meccanismo di autenticazione per limitare il mio utente a visualizzare/aggiornare/eliminare solo il suo utente?
- Come posso utilizzare questo meccanismo di autenticazione per fare qualcosa in generale. Ad esempio se un utente vuole scrivere il suo nome in /tmp/abcd.txt. Come posso assicurarmi che solo gli utenti autenticati siano in grado di farlo?
- Esistono potenziali scappatoie in questo approccio. Devo usare lo stesso codice se la mia app sta per memorizzare molti dati classificati?