Что такое аутентификация на основе пароля в django
Я создал форму, которая наследуется от UserCreationForm
, и использую представление на основе класса, которое наследуется от CreateView
, и когда я использую runserver и отображаю форму, внизу есть раздел Password-based authentication, который я не замечаю
forms.py
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm
class RegisterForm(UserCreationForm):
"""Form to Create new User"""
class Meta:
model = get_user_model()
fields = ["username", "password1", "password2"]
views.py
class SignUp(CreateView):
form_class = RegisterForm
template_name = "register.html"
success_url = reverse_lazy("core:Login")
def form_valid(self, form):
user = form.save()
if user:
login(self.request, user)
return super().form_valid(form)
register.html
<h1>signup</h1>
{{form}}
А когда я запустил код, то увидел такой вывод
поэтому я не ожидал аутентификации на основе пароля.
Мой вопрос о
- Что это такое?
- Нужно ли его здесь отображать ?
- Как его скрыть?
Начиная с версии Django 5.1 и далее, UserCreationForm
по умолчанию имеет поле usable_password
. Это связано с функцией Django для установки непригодных паролей для пользователей. Это полезно в том случае, если вы используете какую-то внешнюю аутентификацию Single Sign-On или LDAP.
Поскольку ваша форма, похоже, предназначена для пользователя и показывать это поле пользователю не имеет особого смысла (эта конкретная форма по умолчанию больше ориентирована на использование в админке сайта), вам следует просто удалить поле из формы, установив значение None
:
class RegisterForm(UserCreationForm):
"""Form to Create new User"""
usable_password = None
class Meta:
model = get_user_model()
fields = ["username", "password1", "password2"]