Переопределить аутентификацию администратора django - PullRequest
0 голосов
/ 22 февраля 2019

Я использую django 2.1.5.Я хочу переопределить процесс аутентификации администратора django, цель состоит в том, чтобы позволить пользователю с is_staff = False иметь возможность войти в систему .Итак, я пытаюсь переопределить AdminSite и следовал этой документации (https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#overriding-default-admin-site). Это код на данный момент:


my_app / forms.py

from django.contrib.admin.forms import AdminAuthenticationForm

class CustomAdminAuthenticationForm(AdminAuthenticationForm):

    def confirm_login_allowed(self, user):
        super().confirm_login_allowed(user)   # i removed is_staff checking here

my_app / admin.py

class MyAdminSite(admin.AdminSite):
    login_form = CustomAdminAuthenticationForm

    def has_permission(self, request):
        return request.user.is_active   # i also removed request.user.is_staff here

my_app / apps.py

from django.contrib.admin.apps import AdminConfig

class MyAdminConfig(AdminConfig):
    default_site = 'my_app.admin.MyAdminSite'

root / settings.py

INSTALLED_APPS = [
    'my_app.apps.MyAdminConfig',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'my_app',
]

Когда я пытался запустить сервер, возникает ошибка:

ImportError: Module "my_app.admin" does not define a "MyAdminSite" attribute/class

Я думаю, что у меня есть точка default_site в my_app / apps.py правильно. Как я могу это исправить?Есть ли другой способ выполнить мою задачу, кроме переопределения AdminSite? Спасибо.

1 Ответ

0 голосов
/ 23 февраля 2019

Это кажется огромной проблемой, вместо того, чтобы просто назначать каждому пользователю роль персонала. Django docs определяет поле is_staff в User как логическое значение, которое "[d] определяет, может ли этот пользователь получить доступ к сайту администратора".Разве это не то, что вы хотите?

Другими словами: что еще вам нужно is_staff для того, чтобы вы не смогли превратить всех ваших пользователей в сотрудников, если вы хотите, чтобы все они имели доступ кАдминистратор сайта?

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