Нужно ли использовать set_unusable_password () при создании новых пользователей в моем приложении Django? - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть приложение, в котором пользователи проходят аутентификацию с использованием активного каталога. Это означает, что нет необходимости хранить пароли в нашей базе данных приложения. Мы храним данные каждого пользователя, такие как имя пользователя и т. Д., В таблице пользователей в нашей базе данных приложения.

Я работаю над реализацией функциональности, позволяющей добавлять пользователей в приложение. Я использую ModelForm для создания формы.

Форма модели выглядит следующим образом:

class GeminiUserAccessForm(ModelForm):
    class Meta:
        model = GeminiUser
        fields = ['email', 'is_authorised']
        labels = {
            'is_authorised': 'Is authorised?'
        }

Метод в представлении для обработки запросов со страницы формы:

def manage_user_access_view(request):
    template_name = 'gemini_users/manage_access.html'
    if request.method == 'POST':
        form = GeminiUserAccessForm(request.POST)
        if form.is_valid():
            new_user = form.save()
            pass
    else:
        form = GeminiUserAccessForm()

    return render(request, template_name, {'form': form})

Все работает как положено, пользователь с указанным адресом электронной почты и авторизованным значением сохраняется в базе данных. Пароль оставлен пустым.

Нужно ли также использовать set_unusable_password() перед сохранением пользователя?

1 Ответ

0 голосов
/ 30 апреля 2019

Это было бы хорошей формой и всесторонней безопасностью, на случай, если кто-то включит аутентификацию, которая по той или иной причине просматривает поле password.

set_unusable_password() звонки make_password(None),который возвращает

UNUSABLE_PASSWORD_PREFIX + get_random_string(UNUSABLE_PASSWORD_SUFFIX_LENGTH)

, когда password is None, то есть хэш пароля, который никогда не считается действительным ни одним из готовых алгоритмов хэширования.

...