Как создать поле ввода, которое могут видеть только пользователи, а не администратор?

В настоящее время я создаю веб-сайт с использованием Django. Цель моего веб-сайта заключается в хранении личной информации пользователя. Ради конфиденциальности и безопасности пользователей. Я пытаюсь сделать так, чтобы я (Администратор) не мог видеть, что они вставили в Text или CharFields, которые отображаются на их личной домашней странице, чтобы пользователь чувствовал себя более комфортно, размещая свою информацию на сайте. Я попытался зашифровать его так же, как пароль, например так:

password = forms.CharField(widget=forms.PasswordInput())

но это не позволило мне или пользователю добавить что-либо в форму. Плюс старые поля показывались пользователю как зашифрованные. Я хочу, чтобы это выглядело зашифрованным для меня на моей странице администратора, но для страницы пользователя это должен быть обычный текст. Итак, мой единственный вопрос: как я смогу совершить этот подвиг? Или это вообще возможно?


person X-TremeFighter12    schedule 04.06.2018    source источник
comment
Если вы спрашиваете конкретно о паролях, это огромная проблема безопасности, если вы можете показать пользователю их пароль. Если вы используете надлежащую систему управления паролями, подобную той, которую предоставляет django, вы не сможете узнать, какой пароль у пользователя.   -  person Jesse    schedule 04.06.2018
comment
Как насчет того, чтобы полностью скрыть это поле на страницах администратора? Само поле не будет зашифровано каким-либо образом, то есть вы по-прежнему сможете видеть его с помощью запросов к базе данных, но оно не будет отображаться на страницах администрирования по умолчанию.   -  person Shovalt    schedule 04.06.2018
comment
@user2896976 user2896976 спасибо за ваш отзыв, речь идет не только о паролях, но и обо всех полях ввода. То, как работает мой веб-сайт, в основном похоже на список контактов. Я не был пользователем, чтобы чувствовать себя в безопасности, вводя имена и номера телефонов своих друзей, не беспокоясь о том, что я (администратор) увижу, что они вводят, и позвоню им. Я пытался использовать виджет пароля, но он тоже был зашифрован на их странице.   -  person X-TremeFighter12    schedule 04.06.2018
comment
@Shovalt спасибо за ваше предложение, но как мне это сделать?   -  person X-TremeFighter12    schedule 04.06.2018
comment
@ X-TremeFighter12 см. мой ответ ниже. Надеюсь, поможет.   -  person Shovalt    schedule 04.06.2018
comment
Обратите внимание, что пока некоторая информация хранится в вашей системе — незашифрованной или с обратимым шифрованием — кто-то (sysadmin, dbadmin, devs и т. д.) должен получить к ней доступ на каком-то этапе, даже если только по чисто техническим причинам.   -  person bruno desthuilliers    schedule 04.06.2018


Ответы (1)


Я бы предложил просто исключить частные поля из страниц администратора. Это описано в документации Django. и требует создания файла с именем admin.py в вашем модуле (тот же каталог, где находится models.py). В этом файле вам нужно создать класс с тем же именем, что и ваша модель, но с суффиксом «Администратор», и в этом классе есть опция exclude с именами полей, которые вы хотели бы скрыть. Смотрите документы для точной реализации.

Как упоминалось в комментариях, это не рекомендуется для хранения реальных паролей. Я предположил из контекста вопроса, что это менее конфиденциальные, но частные данные.

person Shovalt    schedule 04.06.2018