Изменить пользователя, используемого для доступа к базе данных, подключенной к веб-сайту django во время выполнения - PullRequest
0 голосов
/ 10 сентября 2018

В настоящее время я реализовал подпрограмму входа для веб-сайта, над которым я работаю, согласно Это руководство .

Также я не аутентифицирую пользователя с собственной системой djangos, потому что я использую аутентификацию по LDAP моей компании ( django-auth-ldap ).

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

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

Заранее спасибо и извините за плохой английский

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

привет! Если я правильно понимаю вашу проблему, то созданный вами пользователь всегда является суперпользователем, верно?

Что ж, если вы используете модель Django auth.User, вы можете просто сделать User_object.is_super до False, а затем ограничить доступ пользователей, хотя и в поле зрения! (User_object является объектом модели auth.User)

Имеет ли это какой-то смысл?

// Кстати, примечание, ошибка, которую я допустил при создании своей первой пользовательской модели: убедитесь, что хеши паролей хранятся с использованием хешей и солей Django!

0 голосов
/ 10 сентября 2018

Ограничение доступа пользователей к функциям и аутентификация с помощью БД обрабатываются отдельно в Django. Возможно, вы сможете прочитать привилегии ваших пользователей из БД и сопоставить их с разрешениями Django, но это нетривиально (о разрешениях см. https://docs.djangoproject.com/en/2.1/topics/auth/default/#permissions-and-authorization).

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

Пример:

Пользователям в группе A разрешено удалять X. Они видят кнопку «удалить», а также может быть вызов AJAX, который может удалить X.

Пользователи в группе B не имеют права удалять X. Они не видят кнопку удаления, и вызов AJAX, который может удалить X, должен проверить это разрешение и / или членство в группе пользователей.

Если вы используете только уровень авторизации уровня БД, чем - как вы узнали бы, должна ли отображаться кнопка «удалить» и что нужно проверить в вызове AJAX?

...