Как ограничить неавторизованный доступ персонала к странице администратора django?
Я создал свою страницу администратора, и когда администратор входит в систему, он перенаправляет его на этот url http://127.0.0.1:8000/home/, но администратор может изменить url на http://127.0.0.1:8000/logistic/ после входа, как предотвратить это? Любая помощь будет оценена по достоинству
Я понимаю ваш вопрос следующим образом: "Я не хочу, чтобы администратор мог видеть страницу http://127.0.0.1:8000/logistic/"
Вы можете добавить требования к разрешениям в /logistic/
url несколькими способами:
- В вашем
urls.py
файле вы можете использовать декораторpermission_required
(from django.contrib.auth.decorators import permission_required
). Пример:
url(
r'logistic/$',
permission_required("auth.is_internal", raise_exception=True)(
LogisticClassBasedView.as_view()
), name='logistic-page'
),
auth.is_internal
может быть изменено на любое разрешение, которого нет у пользователя admin
.
Если logistic
является моделью в вашем models.py
файле, то по умолчанию она будет иметь 4 разрешения (add, change, delete, view I.E. post, put, delete, get). У вас должно быть что-то вроде logistic.view_logistic
.
Разрешения могут быть назначены на User
или Group
в панели администратора Django:
что соответствует следующей записи в таблице
auth_permission
:
что означает, что вы можете проверить наличие разрешения
customers.view_customer
в файле urls.py
.
Чтобы получить customers
префикс разрешения, вам нужно проверить django_content_type
вашего приложения, которое соответствует content_type_id
скриншота для id=13
.
Если у вашего logistic
нет модели в models.py
, это не сработает.