2 votes

Comment crypter un champ de mot de passe dans django

J'ai un modèle avec un nom, un code et un mot de passe. Je dois crypter le mot de passe. Je ne dois pas non plus afficher un texte en clair dans le champ du mot de passe. Je me suis référé à ce lien

Champ mot de passe dans un modèle Django

Mais la réponse est ancienne et il faut savoir quelle est l'approche actuelle.

Mon modèle est le suivant

class Crew(models.Model):
    crew_id = models.AutoField(primary_key=True)
    crew_code = models.CharField(max_length=200, null=False, unique=True)
    crew_name = models.CharField(max_length=200, null=False)
    crew_password = models.CharField(max_length=200, null=False)

6voto

Exprator Points 17661

À votre avis

from django.contrib.auth.hashers import make_password
crew_password = 'take the input if you are using form'
form = FormName(commit=False)
form.crew_password=make_password(crew_password)
form.save()

1voto

Samantha Points 11

Ajoutez ceci à votre modèle :

def save(self, *args, **kwargs):
    self.crew_password = make_password(self.crew_password)
    super(Crew, self).save(*args, **kwargs)

Et pour cacher le texte dans le champ du mot de passe, dans votre formulaire :

password = forms.CharField(
    widget=forms.PasswordInput
)

0voto

rajasimon Points 1220

Django a ajouté le widget PasswordInput, utilisez-le pour créer un champ de mot de passe dans votre modèle.

from django.forms import ModelForm, PasswordInput

class CrewForm(ModelForm):
    class Meta:
        model = Crew
        fields = '__all__'
        widgets = {
            'crew_password': PasswordInput(),
        }

De plus, comme le suggère @Exprator, il faut utiliser make_password pour mettre à jour le champ du mot de passe dans la vue...

form.crew_password=make_password(crew_password)
form.save()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X