Stockage de mot de passe Django
Je rencontre des difficultés pour stocker les mots de passe avec Django REST Framework. Fondamentalement, le mot de passe du superutilisateur a été stocké correctement (il ressemble à ceci : pbkdf2_sha256$320000$iSRRmEm7YbZHoYzd4wJt2v$Yht0x74n4DSDvM0JjnzddSPU8sp0ahmog0ZAsdT4j84=). Cependant, lorsque j'essaie de faire la même requête POST en utilisant Postman ou la vue Django, le mot de passe est stocké en texte clair. Par exemple, lorsque j'essaie de faire une requête POST en utilisant les données suivantes
{
"username": "kelly.jackson",
"first_name": "Kelly",
"last_name": "Jackson",
"email": "kelly.jackson@gmail.com",
"password": "^qT!4pVl40"
}
ça ressemble à ça
{
"id": 2,
"password": "^qT!4pVl40",
"last_login": null,
"is_superuser": false,
"username": "kelly.jackson",
"first_name": "Kelly",
"last_name": "Jackson",
"email": "kelly.jackson@gmail.com",
"is_staff": false,
"is_active": true,
"date_joined": "2022-04-12T20:49:20.318685Z",
"groups": [],
"user_permissions": []
}
Mais le mot de passe doit être chiffré à l'aide d'un PBKDF, similaire au superutilisateur. Comment puis-je forcer Django à utiliser un PBKDF lors du stockage des mots de passe ?
Je serializers.py
ressemble à ça
from rest_framework import serializers
from django.contrib.auth.models import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
et je views.py
ressemble à ça.
from rest_framework import viewsets
from django.contrib.auth.models import User
from.serializers import UserSerializer
# Create your views here.
class UserView(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
Solution du problème
change the PASSWORD_HASHERS
in your settings.py
PASSWORD_HASHERS = [
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.Argon2PasswordHasher',
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
'django.contrib.auth.hashers.BCryptPasswordHasher',
]
Commentaires
Enregistrer un commentaire