Сохранение пароля работает, но вход в систему не происходит
Попытка сохранить хэшированный pw работает, но попытка войти в систему с именем_имя_и фамилией не работает. Т.е. если объединенный pw называется ThisPw, я должен иметь возможность хранить его в хэшированном виде и затем входить с ним.
if add_form.is_valid():
post = request.POST
print(post['email'])
new_password = post['first_name']+post['last_name']
new_user = Profile.objects.create_user(
email = post['email'],
password=make_password(new_password),
first_name=post['first_name'],
last_name=post['last_name'],
phone_number=post['phone_number'],
)
print(new_password)
new_user.save()
print(add_form)
return redirect('add')
Не используйте make_password()
, если вы передаете пароль в метод по умолчанию create_user()
.
if add_form.is_valid():
post = request.POST
new_password = post['first_name']+post['last_name']
new_user = Profile.objects.create_user(
email = post['email'],
password=new_password,
first_name=post['first_name'],
last_name=post['last_name'],
phone_number=post['phone_number'],
)
new_user.save()
return redirect('add')
По умолчанию вызывается метод create_user()
user.set_password(password)
class UserManager(BaseUserManager):
def _create_user(self, username, email, password, **extra_fields):
"""
Create and save a user with the given username, email, and password.
"""
# ...
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, username, email=None, password=None, **extra_fields):
extra_fields.setdefault('is_staff', False)
extra_fields.setdefault('is_superuser', False)
return self._create_user(username, email, password, **extra_fields)
class AbstractBaseUser(models.Model):
# Stores the raw password if set_password() is called so that it can
# be passed to password_changed() after the model is saved.
_password = None
def set_password(self, raw_password):
self.password = make_password(raw_password)
self._password = raw_password