Джанго Аллах не хеширует пароли - PullRequest
0 голосов
/ 29 апреля 2019

Я использую Django AllAuth для входа в систему.У меня нет пользовательской формы регистрации пользователя, но я использую пользовательскую модель пользователя.Вот моя модель пользователя:

class User(AbstractUser):
    is_candidate = models.BooleanField(default=True)
    is_employer = models.BooleanField(default=False)
    is_admin = models.BooleanField(default=False)

    username = models.CharField(max_length=40, unique=False, default='')

    first_name = models.CharField(_("Ime"), max_length=50, null=True)
    last_name = models.CharField(_("Prezime"), max_length=50, null=True)

    mobile =  models.CharField(_("Telefon"), max_length=20,null=True, blank=True, unique=True)
    address = models.CharField(_("Adresa"), max_length=250, null=True, blank=True)

    def __str__(self):
        return self.email

Теперь, после получения ошибок, что комбинация имя пользователя / пароль при входе в систему не подходит ни для одного и всех пользователей, которых я пытался, я проверил базу данных и заметил, что пароли для зарегистрированных пользователей не хэшируются.совсем.Обратите внимание, что пароли для суперпользователей, те, что я создаю с помощью python manage.py createsuperuser, правильно хэшируются.

Итак, после поиска в Google, я обнаружил, что мне нужно переопределить метод AllAuth save_user(), поэтому я установилACCOUNT_ADAPTER = 'core.social_adapter.UserAccountAdapter' в файле settings.file и добавил следующий код в myproject/core/social_adapter.py:

class UserAccountAdapter(DefaultAccountAdapter):
    print("using account adapter")
    def save_user(self, request, user, form, commit=True):
        user = super(UserAccountAdapter, self).save_user(request, user, form, commit=False)
        user.is_candidate = True
        user.password = makepassword( form.cleaned_data['password'] )
        print('in custom adapter save_user method')
        print(user.password)
        user.save()
        return user

Это, однако, не помогло вообще.Более того, указанный save_user метод, похоже, вообще не используется, так как на консоли я печатаю только "using account adapter".

Я что-то пропустил или сейчас все неправильно понял?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...