Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
96 / 64 / 34
Регистрация: 08.02.2021
Сообщений: 213

Валидация пароля в Django

02.04.2022, 10:46. Показов 2684. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Делаю систему регистрации на сайте. Обратил внимание, что, если ввести в качестве пароля все “звёздочки” (******) или, к примеру, знаки “равно” (===), или символы кириллицы, то, при нужной длине пароля, он проходит валидацию.
Не уверен, что так должно быть… Возможно, это из-за того, что я у себя в форме определил:
Python
1
password1 = forms.CharField(label='Пароль', widget=forms.PasswordInput(attrs={'class': 'reg-form-input'}))
Я так понимаю, я могу сделать свой собственный валидатор на основе RegexValidator, где укажу нужные символы и знаки, которые должен содержать пароль. Но не повлияет ли это на безопасность пользователей? Может для пароля там какие-то дефолтные штуки прикручены, что лучше в это не лезть?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.04.2022, 10:46
Ответы с готовыми решениями:

Как сделать сброс пароля в django?
Доброго времени суток, в django новичок, появилась необходимость сделать страничку с возможностью восстановления пароля по почте силами...

Восстановление пароля в Django по email без использования template
В Django приложении необходимо сделать восстановление пароля по email, но, т.к. приложение работает как api, страницы в нём не...

Почему django не отправляет письмо с восстановлением пароля на почту?
Доброго времени суток, делаю сброс пароля и возникла проблема: При значении параметра ENAIL_BACKEND...

7
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
02.04.2022, 18:29
Добавь что то подобное:

Python
1
2
    def clean(self):
        cleaned_data = super(LoginForm, self).clean()
Хотя... У тебя модель юзера из коробки или переопределенная?
0
96 / 64 / 34
Регистрация: 08.02.2021
Сообщений: 213
02.04.2022, 22:03  [ТС]
Lekks, вот, мой алгоритм регистрации юзера:
Python
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
forms.py
 
class RegistrationUserForm(UserCreationForm):
    """ Форма регистрации нового пользователя """
 
    # Валидатор для username
    username_validator = RegexValidator(
        regex=r'^[0-9a-zA-Z._-]*$',
        message='Не более 30 символов. Только латинские буквы, цифры и символы ./-/_',
    )
 
    username = forms.CharField(
        label='Логин',
        max_length=30,
        validators=[username_validator],
        widget=forms.TextInput(attrs={'class': 'reg-form-input'}))
    first_name = forms.CharField(label='Имя', widget=forms.TextInput(attrs={'class': 'reg-form-input'}))
    last_name = forms.CharField(label='Фамилия', widget=forms.TextInput(attrs={'class': 'reg-form-input'}))
    email = forms.EmailField(label='Эл. адрес', widget=forms.EmailInput(attrs={'class': 'reg-form-input'}))
    password1 = forms.CharField(label='Пароль', widget=forms.PasswordInput(attrs={'class': 'reg-form-input'}))
    password2 = forms.CharField(label='Повторите пароль', widget=forms.PasswordInput(attrs={'class': 'reg-form-input'}))
 
    class Meta:
        model = User
        fields = (
            'username', 'first_name', 'last_name', 'email',
            'password1', 'password2'
        )
 
views.py
 
class RegistrationUserView(CreateView):
    """
    Возвращает форму регистрации пользователя и, в случае успешной регистрации,
    перенаправляет пользователя на главную страницу сайта
    """
 
    form_class = RegistrationUserForm
    template_name = 'users_app/register.html'
    success_url = reverse_lazy('users_app:homepage')
 
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['title'] = 'Регистрация'
        return context
 
    def form_valid(self, form):
        user = form.save()
        SimpleUser.objects.create(
            owner=user,
            username=user.username,
            name=user.first_name.capitalize(),
            surname=user.last_name.capitalize(),
            email=user.email,
            slug=user.username,
        )
        login(self.request, user)
        # редирект на страницу добавления аватарки
        return redirect('users_app:avatar')
И можно уточнить, что именно делает ваш код?
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
03.04.2022, 08:30
Вопрос - для чего переопределены поля паролей в форме? Не вижу, чтобы как то они использовались.

Метод clean отвечает за проверку и валидацию формы, в том числе полей паролей.
0
96 / 64 / 34
Регистрация: 08.02.2021
Сообщений: 213
03.04.2022, 09:30  [ТС]
Lekks, я переопределил поля паролей, чтобы им атрибут добавить, как у остальных полей. Затем в шаблоне их использую.
HTML5
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
{% extends 'users_app/base.html' %}
 
{% block content %}
<main class="main-container">
    <section class="title">
        <h1 class=title-text">Регистрация</h1>
    </section>
    <section class="fields">
        <form method="post" action="{% url 'users_app:register' %}" class="reg-form">
            {% csrf_token %}
            <ul class="rows">
                {% for f in form %}
                <li class="row">
                    <label for="{{ f.id_for_label }}" class="reg-form-label">{{ f.label }}*</label>
                    {{ f }}
                </li>
                <div class="errors-msg">{{ f.errors }}</div>
                {% endfor %}
            </ul>
             <div class="btn-container">
                <button type="submit" class="reg-btn">Регистрация</button>
                <a href="{% url 'users_app:login' %}"><p class="reg-btn3">Вход</p></a>
            </div>
        </form>
    </section>
</main>
{% endblock content %}
Возможно, из-за этого поля паролей стали себя так странно вести? Или они по умолчанию принимают в себя кириллицу и прочие символы?
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
03.04.2022, 09:41
Цитата Сообщение от DmBnd Посмотреть сообщение
Возможно, из-за этого поля паролей стали себя так странно вести?
Ты их переопределил, но не валидируешь, вот они и берут все что напихаешь. Вообще странные конечно решения у тебя. Почитай в гугле - материалов полно. Но в твоем случае необязательно через форму класс навешивать на поля. Можно и через css.
1
96 / 64 / 34
Регистрация: 08.02.2021
Сообщений: 213
03.04.2022, 12:27  [ТС]
Lekks, и изменил свою форму на такую
Python
1
2
3
4
5
6
7
8
9
10
11
forms.py
 
   class RegistrationUserForm(UserCreationForm):
    """ Форма регистрации нового пользователя """
 
       class Meta:
           model = User
           fields = (
               'username', 'first_name', 'last_name', 'email',
               'password1', 'password2'
           )
, чтобы определить стили в CSS, как вы посоветовали. И, при попытке регистрации с кириллицей и прочими символами, django пропустил мой пароль. Так что, в любом случае, надо прописывать собственные валидаторы, а это значит, что надо переопределять поля в любом случае. Так ведь?
0
243 / 178 / 73
Регистрация: 17.10.2018
Сообщений: 749
05.04.2022, 09:44
Лучший ответ Сообщение было отмечено DmBnd как решение

Решение

DmBnd, проверил у себя, да, при такой схеме надо валидировать пароли отдельно (да и не только пароли). Что то типа:

Python
1
2
3
4
5
6
from django.contrib.auth.password_validation import validate_password
 
def clean_password(self):
        password = self.cleaned_data['password']
        validate_password(password)
        return password
Это в форме.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.04.2022, 09:44
Помогаю со студенческими работами здесь

Django 2.0 восстановление пароля через django-allauth
Здравствуйте, у меня возник вопрос, в django-allauth есть функция восстановления пароля по эл. почте, но вот, указав почту, сообщение не...

Валидация пароля
Здравствуйте! Подскажите как реализовать обработку валидации введенного повторно пароля, для проверки, совпадают ли пароли на стороне...

Валидация пароля
You would like to set a password for an email account. However, there are two restrictions on the format of the password. It has to contain...

Валидация пароля
Сделал пользовательский элемент управления. В нем надо сделать валидацию пароля в textbox: - наличия текста - наличия в пароле не...

Валидация пароля jQuery
Добрый день. Нужно сделать валидацию формы с паролем. Но почему-то даже простейшая проверка на &gt;6 символов не удаётся. Это моя первая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru