Ограничить администратора / доступ для анонимных пользователей, а не администраторов Django - PullRequest
0 голосов
/ 21 марта 2019

У меня есть новое приложение:

newApp

с 3 пользователями

[admin, user1, user2]

и страница входа (не из / admin /).Можно ли ограничить / перенаправить доступ к входу администратора django?я хочу просто войти в admin / path, если пользователь вошел в систему IS и admin, это означает, что он не должен работать, если я не вошел в систему или не вошел как обычный пользователь.

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Я добавляю этот ответ, потому что тот, который предоставил Педро, не смог ответить на ту часть, которую я пытался выяснить, не давая никому доступа к / admin / path.

Я использовал Django-Decorator-Include , чтобы смешать его с пользовательским декоратором Педро

и результат на моем urls.py:

from decorator_include import decorator_include
from django.core.exceptions import PermissionDenied

def user_is_admin(function):
    def wrap(request, *args, **kwargs):
        if request.user.is_authenticated and request.user.is_staff:
            return function(request, *args, **kwargs)
        else:
            raise PermissionDenied
    return wrap

urlpatterns = [
    .....
    path('admin/', decorator_include([user_is_admin], admin.site.urls)),
    .....
]
0 голосов
/ 21 марта 2019

Вы можете написать собственный декоратор представления, чтобы проверить, является ли пользователь администратором, и если нет, вызвать Http404, например:

def user_is_admin(function):
    def wrap(request, *args, **kwargs):
        if request.user.is_authenticated and request.user.is_admin:
            return function(request, *args, **kwargs)
        else:
            raise Http404
    return wrap

user.is_admin будет пользовательской реализацией, просто примером. Теперь вам просто нужно обернуть ваши взгляды

@user_is_admin
def my_view(request):
    ...
...