Django admin.site.urls доступен только суперпользователю (страница входа администратора доступна только суперпользователю) - PullRequest
0 голосов
/ 08 января 2019

Я хочу ограничить доступ к странице входа администратора django только суперпользователю. Это означает, что если вы не являетесь суперпользователем и пытаетесь получить доступ к http://127.0.0.1:8000/admin - вы должны быть перенаправлены на страницу 404, что-то вроде этого. Средство или настраиваемое представление для выполнения этой аутентификации является проблемой. Пожалуйста, кто-нибудь, помогите мне с подсказкой, как это сделать?

  urlpatterns = [
     path('admin/', my_custom_function,name="check_if_superuser"),


     # when somebody hits this url pattern , he/she should be taken to the 
     # function above for checking if superuser befor being redirected to 
     # django admin login page
 ]

и в моем views.py у меня есть следующая функция, которая выполняет аутентификацию

    def  my_custom_function(request):
         if request.user.is_superuser():
            #... redirect to django admin login page

         else:
             # return render(404_page)

да что-то подобное.

1 Ответ

0 голосов
/ 08 января 2019

По умолчанию администратор django разрешает вход в систему только суперпользователю или обычному пользователю. Таким образом, довольно безопасно иметь панель входа администратора. Кроме того, если вы хотите ограничить этот путь входа в систему, я думаю, что лучше всего установить брандмауэр на этот конкретный маршрут. Так что только IP из белого списка могут получить к нему доступ. Для этого вы можете использовать NGINX, и конфигурация должна выглядеть примерно так:

location /admin {
  # block one workstation
  deny    192.168.1.1;
  # allow anyone in 192.168.1.0/24
  allow   192.168.1.0/24;
  # drop rest of the world 
  deny    all;
}

Эта статья может быть полезна при настройке.

...