Как ограничить несанкционированный доступ персонала к странице администратора django?

#django #django-models #django-views #django-forms

Вопрос:

Я создал свою страницу администратора, поэтому, когда администратор войдет в систему, он перенаправит их на этот URL http://127.0.0.1:8000/home/, но администратор может изменить URL-адрес на http://127.0.0.1:8000/logistic/ после того, как они войдут в систему, как предотвратить это? Любая помощь будет признательна

Комментарии:

1. Создайте пользовательское разрешение или группу и примените их к logistic/ URL-адресу или представлению. У администратора нет этого разрешения.

Ответ №1:

Я понимаю ваш вопрос так: «Я не хочу, чтобы администратор мог видеть http://127.0.0.1:8000/logistic/ страница»

Вы можете добавить требования к разрешениям на /logistic/ URL-адрес несколькими способами:

  1. В вашем urls.py файле вы можете использовать permission_required декоратор ( from django.contrib.auth.decorators import permission_required ) Пример:
     url(
        r'logistic/

 auth.is_internal   может быть изменено на любое разрешение, которого у  admin  пользователя нет.

Если  logistic  в вашем  models.py  файле есть модель, то по умолчанию у нее будет 4 разрешения (добавлять, изменять, удалять, просматривать, т. Е. публиковать, помещать, удалять, получать). У тебя должно быть что-то вроде  logistic.view_logistic  .

Разрешения могут быть назначены a  User  или a  Group  в панели администратора Django: Права администраторачто соответствует следующей записи в  auth_permission  таблице: введите описание изображения здесьэто означает, что вы можете затем проверить наличие  customers.view_customer  разрешений в  urls.py  файле.

Чтобы получить  customers  префикс разрешения, вам необходимо проверить django_content_type  , соответствует ли ваше приложение показанному на  content_type_id  скриншоте  id=13  .

Если у  logistic  вас нет модели, то  models.py  это не сработает.


Комментарии:

1. Я вижу, испытаю ваш метод и посмотрю, как все пойдет

,
permission_required("auth.is_internal", raise_exception=True)(
LogisticClassBasedView.as_view()
), name='logistic-page'
),
auth.is_internal может быть изменено на любое разрешение, которого у admin пользователя нет.

Если logistic в вашем models.py файле есть модель, то по умолчанию у нее будет 4 разрешения (добавлять, изменять, удалять, просматривать, т. Е. публиковать, помещать, удалять, получать). У тебя должно быть что-то вроде logistic.view_logistic .

Разрешения могут быть назначены a User или a Group в панели администратора Django: Права администраторачто соответствует следующей записи в auth_permission таблице: введите описание изображения здесьэто означает, что вы можете затем проверить наличие customers.view_customer разрешений в urls.py файле.

Чтобы получить customers префикс разрешения, вам необходимо проверить django_content_type , соответствует ли ваше приложение показанному на content_type_id скриншоте id=13 .

Если у logistic вас нет модели, то models.py это не сработает.

Комментарии:

1. Я вижу, испытаю ваш метод и посмотрю, как все пойдет