Problème hachage de mot de passe
Bonjour à tous !
J'ai un petit problème, j'utilise Django pour faire un petit site et je voudrais hacher les mots de passe que les utilisateurs créent. J'ai décidé d'utiliser Bcrypt mais lorsque je remplis le formulaire d'inscription et que je le valide j'ai une erreur :
Code:
1 2
| Exception Type: DataError
Exception Value: ERREUR: valeur trop longue pour le type character varying(30) |
Au début je pensais que c'était parce qu'au niveau de mon attribut password j'avais mis maximum 20 caractères donc j'ai modifié à 256 caractères :
Code:
1 2 3 4 5 6 7
| class User(models.Model):
username = models.CharField(max_length=50, unique=True)
email = models.EmailField(max_length=100, unique=True)
password = models.CharField(max_length=256)
def __str__(self):
return self.username |
Mais j'ai toujours cette erreur, je vous mets mon views.py où j'utilise Bcrypt :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| from django.shortcuts import render, redirect
from .forms import UserSignUpForm, ParagraphErrorList
from django.contrib import messages
from .models import User
import bcrypt
def signup(request):
if request.method == 'POST':
form = UserSignUpForm(request.POST, error_class=ParagraphErrorList)
if form.is_valid():
email = form.cleaned_data['email']
username = form.cleaned_data['username']
password = form.cleaned_data['password'].encode("utf-8")
enc_password = bcrypt.hashpw(password, bcrypt.gensalt())
user = User.objects.filter(email=email, username=username)
if not user.exists():
user = User.objects.create(
email=email,
username=username,
password=enc_password
)
messages.success(request, 'Votre compte a bien été créé, vous pouvez vous connecter !')
return redirect('/signin/')
else:
form = UserSignUpForm()
return render(request, 'store/signup.html', {'form': form}) |
Est-ce que vous pourriez me dire d'où vient cette erreur ? Je ne comprends pas là :(
Merci à tous !