Коллеги, такой вопрос: создал модель для кастомного юзера, отнаследованную от AbstractBaseUser, плюс ещё к ней менеджера и формы добавил (как в документации). При попытке создать суперпользователя всё ок, но когда создаю обычного пользователя, то вижу такую картину:
Из-за чего возникает данная ошибка и как её исправить?
Код:
class UserProfileManager(BaseUserManager):
def create_user(self, email, date_of_birth, password):
"""
Creates and saves a User with the given email, date of
birth and password.
"""
if not email:
raise ValueError('Users must have an email address')
user = self.model(
email=self.normalize_email(email),
date_of_birth=date_of_birth,
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, date_of_birth, password):
"""
Creates and saves a superuser with the given email, date of
birth and password.
"""
user = self.create_user(email,
password=password,
date_of_birth=date_of_birth
)
user.is_admin = True
user.save(using=self._db)
return user
class UserProfile(AbstractBaseUser):
"""
The user-profile model
"""
MALE = 'MALE'
FEMALE = 'FEMALE'
GENDER = (
(MALE, 'Male'),
(FEMALE, 'Female'),
)
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
# The additional attributes we wish to include.
# The user's last name
last_name = models.CharField(max_length=50, blank=True)
# The user's first name
first_name = models.CharField(max_length=50, blank=True)
# The user's middle name
middle_name = models.CharField(max_length=50, blank=True)
# The user's birthday
date_of_birth = models.DateField()
# Gender
gender = models.CharField(max_length=6, choices=GENDER, default=MALE)
# The user's profile image
picture = models.ImageField(upload_to='profile_images', blank=True)
# Country
country = models.CharField(max_length=100, blank=True)
# City
city = models.CharField(max_length=100, blank=True)
# The user's full address
address = models.CharField(max_length=500, blank=True)
# The institution where the user works or studies
institution = models.CharField(max_length=500, blank=True)
# The user's job
job = models.CharField(max_length=500, blank=True)
# The user's registration date
registration_date = models.DateTimeField(default=datetime.datetime.now())
# How many tests complete this user and how many tests created this user.
rating = models.IntegerField(default=0)
objects = UserProfileManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['date_of_birth']
def get_full_name(self):
# The user is identified by their email address
return self.email
def get_short_name(self):
# The user is identified by their email address
return self.email
def __str__(self):
return self.email
def has_perm(self, perm, obj=None):
"Does the user have a specific permission?"
# Simplest possible answer: Yes, always
return True
def has_module_perms(self, app_label):
"Does the user have permissions to view the app `app_label`?"
# Simplest possible answer: Yes, always
return True
@property
def is_staff(self):
"Is the user a member of staff?"
# Simplest possible answer: All admins are staff
return self.is_admin
class UserCreationForm(forms.ModelForm):
"""A form for creating new users. Includes all the required
fields, plus a repeated password."""
password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)
class Meta:
model = UserProfile
fields = ('email', 'date_of_birth')
def clean_password2(self):
# Check that the two password entries match
password1 = self.cleaned_data.get("password1")
password2 = self.cleaned_data.get("password2")
if password1 and password2 and password1 != password2:
raise forms.ValidationError("Passwords don't match")
return password2
def save(self, commit=True):
# Save the provided password in hashed format
user = super(UserCreationForm, self).save(commit=False)
user.set_password(self.cleaned_data["password1"])
if commit:
user.save()
return user
class UserChangeForm(forms.ModelForm):
"""A form for updating users. Includes all the fields on
the user, but replaces the password field with admin's
password hash display field.
"""
password = ReadOnlyPasswordHashField()
class Meta:
model = UserProfile
fields = ('email', 'password', 'date_of_birth', 'is_active', 'is_admin')
def clean_password(self):
# Regardless of what the user provides, return the initial value.
# This is done here, rather than on the field, because the
# field does not have access to the initial value
return self.initial["password"]
Одному из пользователей моего сайта недавно удалось запустить эту трассировку при попытке входа в систему. В Django Admin его пароль читается Invalid password format or unknown hashing algorithm.
Я понятия не имею, что могло быть причиной этого. До сих пор это был единичный случай, и мне и другим пользователям удалось успешно зарегистрироваться и войти на сайт.
Проследить
Traceback (most recent call last):
File "/home/gituser/.virtualenvs/bbox/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/var/git/bbox/userprofile/views.py", line 67, in login_view
if form.is_valid():
File "/home/gituser/.virtualenvs/bbox/lib/python2.7/site-packages/django/forms/forms.py", line 124, in is_valid
return self.is_bound and not bool(self.errors)
File "/home/gituser/.virtualenvs/bbox/lib/python2.7/site-packages/django/forms/forms.py", line 115, in _get_errors
self.full_clean()
File "/home/gituser/.virtualenvs/bbox/lib/python2.7/site-packages/django/forms/forms.py", line 271, in full_clean
self._clean_form()
File "/home/gituser/.virtualenvs/bbox/lib/python2.7/site-packages/django/forms/forms.py", line 299, in _clean_form
self.cleaned_data = self.clean()
File "/var/git/bbox/userprofile/forms.py", line 83, in clean
self.user_cache = authenticate(username=username, password=password)
File "/home/gituser/.virtualenvs/bbox/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 45, in authenticate
user = backend.authenticate(**credentials)
File "/home/gituser/.virtualenvs/bbox/lib/python2.7/site-packages/django/contrib/auth/backends.py", line 15, in authenticate
if user.check_password(password):
File "/home/gituser/.virtualenvs/bbox/lib/python2.7/site-packages/django/contrib/auth/models.py", line 304, in check_password
return check_password(raw_password, self.password, setter)
File "/home/gituser/.virtualenvs/bbox/lib/python2.7/site-packages/django/contrib/auth/hashers.py", line 42, in check_password
hasher = get_hasher(algorithm)
File "/home/gituser/.virtualenvs/bbox/lib/python2.7/site-packages/django/contrib/auth/hashers.py", line 115, in get_hasher
"setting?" % algorithm)
ValueError: Unknown password hashing algorithm ''. Did you specify it in the PASSWORD_HASHERS setting?
Andrey Bogatyrev
Проблема с добавлением SSH ключа на GitHub.
Генерировал уже не один ключ.
Пытаюсь понять в чем проблема использую GitHub Docs:
# Ensure the ssh-agent is running.
$ eval "$(ssh-agent -s)"
Agent pid 1276
# Add your SSH private key to the ssh-agent.
$ ssh-add ~/.ssh/id_ed25519
Identity added: /c/Users/M72e-2/.ssh/id_ed25519 (2way@yandex.ru)
# Копирую ключ из Git Bush (либо из сохраненного файла в текстовом редакторе)
$ clip < ~/.ssh/id_ed25519.pub
# Пытаюсь добавить ключ в GitHub (с почтой и без)
SHA256:NAVXvX3fI7CGSl+9UScomAQ1CbyPnBes5vRAd2Q1Ho4 2way@yandex.ru , но всегда выдает ошибку:
"Key is invalid. You must supply a key in OpenSSH public key format".
# ключ существует
$ ls -al ~/.ssh
total 23
drwxr-xr-x 1 M72e-2 197121 0 Aug 20 23:48 ./
drwxr-xr-x 1 M72e-2 197121 0 Aug 20 23:34 ../
-rw-r--r-- 1 M72e-2 197121 464 Aug 21 02:53 id_ed25519
-rw-r--r-- 1 M72e-2 197121 97 Aug 21 02:53 id_ed25519.pub
-rw-r--r-- 1 M72e-2 197121 92 Aug 20 23:48 known_hosts
В чем проблема?
4
0
Aleksandr Litvinov
Ключ, который нужно вставить в github должен начинаться с «ssh-ed25519». Если вы открываете публичный ключ и видите там строку с «SHA256» вначале, то возможно вы как-то не так сгенерировали ключ. Правильная команда:
ssh-keygen -t ed25519 -C "your_email@example.com"
0
Елизавета Пантюхина
Aleksandr Litvinov, у меня такая же проблема. Ключ начинается с SHA256, но команду я ввела правильно, перепроверила и повторно вводила. Ссылка со скриншотом команды https://ibb.co/QMM4Ld6
0
Andrey Bogatyrev
`**Aleksandr Litvinov**,
# Все получилось.
# После команды:
$ ssh-keygen -t ed25519 -C "2way@yandex.ru"
# Получаю такое сообщение:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/c/Users/M72e-2/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/M72e-2/.ssh/id_ed25519
Your public key has been saved in /c/Users/M72e-2/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:tSbaOFigLSfQuzFpSoX9bZdM6UTmV8OZHxlzOHO5oU0 2way@yandex.ru
# Изначально для GitHub добавлял этот ключ - "SHA256:......",
# но это приводило к ошибке "Key is invalid. ..."
# Ключ нужен именно из файла /id_ed25519.pub,
# причем смог его скопировать только именно из Bash:
$ cd /c/Users/M72e-2/.ssh
$ cat id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIODl7HLIHn++hPLdUwLT7TbTjraz/cOw+MmpCvxo6Wpg 2way@yandex.ru`
# SHA256:... - это приватный ключ?
1
Aleksandr Litvinov
Abo, здорово, что получилось!
Елизавета, вам нужно получить содержимое сгенерированного файла, а не то, что выводится после выполнения команды.
То, что вы видите в выводе создания ключа — это отпечаток открытого ключа, а не сам ключ.
0
В этой статье представлена ошибка с номером Ошибка 86, широко известная как ERROR_INVALID_PASSWORD, и ее описание Указанный сетевой пароль неверен.
О системной ошибке Windows
Системные ошибки Windows возникают в разное время во время нормального использования операционной системы. Пользователи должны получить код ошибки, который они могут использовать для анализа и расследования того, что произошло с компьютером. Однако эти коды не всегда предоставляют подробную информацию. А поскольку такие коды может выдавать и несистемное программное обеспечение, при анализе ошибок пользователю потребуется понимание контекста программы и времени выполнения. Вот несколько способов понять симптомы, причины и общие решения.
Определения (Бета)
Здесь мы приводим некоторые определения слов, содержащихся в вашей ошибке, в попытке помочь вам понять вашу проблему. Эта работа продолжается, поэтому иногда мы можем неправильно определить слово, так что не стесняйтесь пропустить этот раздел!
- Сеть — для большинства вопросов программирования используйте тег [network-programming].
- Пароль — пароли в основном используются как способ доступ к информации, а также ограничение количества пользователей, которые могут получить доступ к машине.
Симптомы Ошибка 86 — ERROR_INVALID_PASSWORD
Во время обработки Windows отправляет коды системных ошибок, чтобы сообщить пользователю о проблеме, возникшей с компьютером. Они появляются в неожиданное время, поэтому их трудно обнаружить, если не проанализировать сообщение об ошибке. Коды системных ошибок Windows являются симптомами других проблем, происходящих с компьютером, поэтому пользователям необходимо обратить внимание на сообщение об ошибке, время и процессы, запущенные во время ее возникновения.
(Только для примера)
Причины ERROR_INVALID_PASSWORD — Ошибка 86
Системные ошибки Windows могут быть вызваны программным или аппаратным сбоем. Иногда программное обеспечение не работает согласованно с аппаратным обеспечением из-за изменений или общих аппаратных сбоев. В некоторых случаях пользователи могли установить противоречивые драйверы или повредить ОС. Возможно, в каком-то компоненте произошел аномальный скачок напряжения, который может повредить детали и повлиять на его работу. Могли произойти различные факторы, которые привели к появлению ошибки System в определенные периоды использования компьютера. Проблемы с программным и аппаратным обеспечением, конечно, легко решаются, если пользователь может точно определить часть, которая вызывает сбой. Чтобы решить проблемы с ошибками такого рода, попробуйте следующие методы ремонта.
Методы ремонта
Если метод ремонта вам подошел, пожалуйста, нажмите кнопку upvote слева от ответа, это позволит другим пользователям узнать, какой метод ремонта на данный момент работает лучше всего.
Обратите внимание: ни ErrorVault.com, ни его авторы не несут ответственности за результаты действий, предпринятых при использовании любого из методов ремонта, перечисленных на этой странице — вы выполняете эти шаги на свой страх и риск.
Метод 4 — Использовать восстановление системы
Для окна 7
- Нажмите «Пуск»> «Все программы»> «Стандартные»> «Системные инструменты».
- Нажмите «Восстановление системы», а затем нажмите «Далее».
- Выбирайте точку восстановления, когда знаете, что с вашим компьютером все в порядке.
- Продолжайте нажимать «Далее», а затем — «Готово».
- Это займет время, так что наберитесь терпения и дождитесь полной остановки операции.
Для Windows 8, 8.1 или 10
- Щелкните правой кнопкой мыши кнопку «Пуск», затем выберите «Система».
- В окне «Система» нажмите «Система и безопасность».
- Нажмите «Система» и слева нажмите «Защита системы».
- Нажмите «Восстановление системы», следуйте инструкциям, чтобы выбрать точку восстановления, а затем нажимайте «Далее», пока не увидите кнопку «Готово».
- Дождитесь завершения процесса восстановления.
Метод 1 — Восстановить поврежденные или отсутствующие системные файлы
Проверка системных файлов — этот инструмент работает почти так же, как программа проверки реестра, но помогает находить и восстанавливать поврежденные или отсутствующие системные файлы, поэтому его запуск занимает немного больше времени.
- Чтобы запустить команду, откройте командную строку с повышенными привилегиями, набрав ее в окне поиска, затем щелкните правой кнопкой мыши командную строку и выберите «Запуск от имени администратора».
- Введите в командной строке sfc / scannow и дождитесь успешного завершения процесса проверки.
Запустите Checkdisk — Chkdsk исправляет многие несоответствия с ОС. Системные ошибки также можно исправить с помощью этой утилиты. Чтобы запустить это,
- Откройте командную строку, введя ее в поле поиска, а затем, когда вы увидите результат в верхней части списка, щелкните его правой кнопкой мыши и выберите «Запуск от имени администратора».
- Ваша система может сказать, что вы не можете запустить ее в данный момент, потому что вы все еще обрабатываете данные, и спросит вас, хотите ли вы запустить ее перед следующим запуском, просто нажмите y для подтверждения, а затем выйдите с экрана и перезагрузите компьютер.
- После перезагрузки компьютера вы увидите, что checkdisk работает вне Windows, просто дайте ему закончить, пока он не даст вам отчет о том, что было найдено, исправлено или отмечено.
- Закройте окно и дайте компьютеру нормально перезагрузиться.
Метод 2 — Обновите или переустановите драйвер
Изменения, внесенные в ваш компьютер, могут испортить ваш драйвер. В этом случае вы можете переустановить драйвер или обновить его. Для этого вы можете сделать следующее.
- Если вы получили код ошибки диспетчера устройств, обратите внимание на описание, чтобы вы могли точно определить драйвер или компонент, вызывающий ошибку.
- Запустите диспетчер устройств, выполнив поиск Диспетчер устройств или запустив «devmgmt.msc»
- Найдите драйвер в списке и щелкните его правой кнопкой мыши.
- Нажмите Удалить , если вы хотите переустановить драйвер, или Обновить программное обеспечение драйвера , если пытаетесь его обновить.
- Появится окно подтверждения. Убедитесь, что флажок Удалить программное обеспечение драйвера снят.
- Нажмите «ОК» и перезагрузите компьютер.
Вы можете сделать это поочередно:
- Вы можете вручную загрузить драйвер от производителя.
- Запустите его, чтобы заменить текущий драйвер, который вы используете.
- После этого перезагрузите компьютер.
Метод 3 — Откатите свой драйвер
Вы также можете вернуться к исходному драйверу, установленному на вашем компьютере. Для этого:
- В диспетчере устройств найдите проблемный драйвер.
- Щелкните устройство правой кнопкой мыши и выберите «Свойства».
- Когда вы увидите окно «Свойства», щелкните вкладку «Драйвер».
- Вы увидите кнопку «Откатить драйвер», нажмите ее.
- Подтвердите откат, нажав «Да», когда появится вопрос «Вы уверены, что хотите вернуться к ранее установленному программному обеспечению драйвера?»
- После этого перезагрузите компьютер.
Метод 5 — Восстановите переустановку с помощью компакт-диска с ОС или флэш-накопителя
- Лучший способ восстановить системное программное обеспечение — это переустановить его. Процесс восстановления и переустановки помогает сохранить файлы при восстановлении операционной системы. Тем не менее, вам нужно убедиться, что вы создали резервную копию своего файла, если вам действительно нужно переустановить компьютер. Вам нужно будет вставить установочный носитель и перезагрузить компьютер.
- Войдите в BIOS, процесс отличается от модели компьютера к модели, это может быть кнопка F1, F2 или Del.
- Оказавшись там, перейдите в раздел загрузки, установите загрузку с установочного диска и сохраните настройки.
- Для более ранней версии Windows вам может потребоваться нажать на клавиатуру, пока вы ждете, пока компьютер не получит доступ к установочному диску.
- Сначала выберите утилиту восстановления, а не чистую установку ОС. Это может сэкономить вам много хлопот. Однако, если проблема не исчезнет после перезагрузки компьютера, просто сделайте резервную копию файлов и выполните чистую переустановку.
Другие языки:
How to fix Error 86 (ERROR_INVALID_PASSWORD) — The specified network password is not correct.
Wie beheben Fehler 86 (ERROR_INVALID_PASSWORD) — Das angegebene Netzwerkkennwort ist nicht korrekt.
Come fissare Errore 86 (ERROR_INVALID_PASSWORD) — La password di rete specificata non è corretta.
Hoe maak je Fout 86 (ERROR_INVALID_PASSWORD) — Het opgegeven netwerkwachtwoord is niet correct.
Comment réparer Erreur 86 (ERROR_INVALID_PASSWORD) — Le mot de passe réseau spécifié n’est pas correct.
어떻게 고치는 지 오류 86 (ERROR_INVALID_PASSWORD) — 지정된 네트워크 암호가 올바르지 않습니다.
Como corrigir o Erro 86 (ERROR_INVALID_PASSWORD) — A senha de rede especificada não está correta.
Hur man åtgärdar Fel 86 (ERROR_INVALID_PASSWORD) — Det angivna nätverkslösenordet är inte korrekt.
Jak naprawić Błąd 86 (ERROR_INVALID_PASSWORD) — Podane hasło sieciowe jest nieprawidłowe.
Cómo arreglar Error 86 (ERROR_INVALID_PASSWORD) — La contraseña de red especificada no es correcta.
Об авторе: Фил Харт является участником сообщества Microsoft с 2010 года. С текущим количеством баллов более 100 000 он внес более 3000 ответов на форумах Microsoft Support и создал почти 200 новых справочных статей в Technet Wiki.
Следуйте за нами:
Последнее обновление:
11/11/22 05:32 : Пользователь Windows 10 проголосовал за то, что метод восстановления 4 работает для него.
Этот инструмент восстановления может устранить такие распространенные проблемы компьютера, как синие экраны, сбои и замораживание, отсутствующие DLL-файлы, а также устранить повреждения от вредоносных программ/вирусов и многое другое путем замены поврежденных и отсутствующих системных файлов.
ШАГ 1:
Нажмите здесь, чтобы скачать и установите средство восстановления Windows.
ШАГ 2:
Нажмите на Start Scan и позвольте ему проанализировать ваше устройство.
ШАГ 3:
Нажмите на Repair All, чтобы устранить все обнаруженные проблемы.
СКАЧАТЬ СЕЙЧАС
Совместимость
Требования
1 Ghz CPU, 512 MB RAM, 40 GB HDD
Эта загрузка предлагает неограниченное бесплатное сканирование ПК с Windows. Полное восстановление системы начинается от $19,95.
ID статьи: ACX013930RU
Применяется к: Windows 10, Windows 8.1, Windows 7, Windows Vista, Windows XP, Windows 2000
Совет по увеличению скорости #60
Заменить медленный жесткий диск:
Если у вас старый и медленный жесткий диск со скоростью 5400 об / мин, рекомендуется заменить его на 7200 об / мин. Вы можете использовать традиционный жесткий диск SATA или SAS, но сейчас твердотельные накопители становятся менее дорогими. В зависимости от ваших потребностей, просто убедитесь, что у вас самый высокий доступный RPM.
Нажмите здесь, чтобы узнать о другом способе ускорения работы ПК под управлением Windows
Ошибки в алфавитном порядке: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Логотипы Microsoft и Windows® являются зарегистрированными торговыми марками Microsoft. Отказ от ответственности: ErrorVault.com не связан с Microsoft и не заявляет о такой связи. Эта страница может содержать определения из https://stackoverflow.com/tags по лицензии CC-BY-SA. Информация на этой странице представлена исключительно в информационных целях. © Copyright 2018