Django Встроенные пользовательские разрешения + только просмотр - проблемы с разрешениями - PullRequest
9 голосов
/ 18 мая 2010

Я не уверен, является ли это ошибкой или я просто что-то упустил (хотя я уже разобрал документацию по inlines), но:

Допустим, у меня есть модель A. Модель A является встроенной моделью B. Пользователь U имеет полный доступ к модели B, но только меняет разрешения для модели A (поэтому не добавлять и не удалять).

Однако при редактировании модели B пользователь U по-прежнему может видеть ссылку «Добавить еще один A» внизу, хотя U не добавляет разрешения для этой соответствующей модели.

Что не так? Почему эта ссылка продолжает показываться? Моя логика говорит, что если у U нет прав на добавление A, ссылка больше не должна появляться.

Кроме того, в идеале я хотел бы предоставить U только права на просмотр модели A (поэтому не добавлять, удалять или изменять - только просмотр), но я читал об этой (странной, если вы спросите меня) философии в соответствии с который "Если вы не доверяете U, просто лишите его доступа к административной области все вместе". Вид глупой доктрины.

Прямо сейчас я пытаюсь смоделировать эти «разрешения только на просмотр», оставив U с правами только на изменение и установив все поля только для чтения. Но я думаю, что это своего рода глупый подход и может также вызвать проблемы, такие как проблема с разрешениями выше ...

Как обычный программист на Django, такой как я, может получить разрешения только для просмотра, и больше всего, как мне избавиться от ссылки "Добавить еще один" в нижней части формы редактирования администратора?

Заранее спасибо!

1 Ответ

2 голосов
/ 22 июня 2010

Если мне нужна версия администратора, доступная только для чтения, я просто пишу несколько обычных представлений Django и не допускаю их в администрацию.

Я не думаю, что то, о чем вы говорите (разрешение изменений в объекте, но не в его строках), действительно поддерживается администратором. Не поймите меня неправильно: администратор очень гибкий и полезный, но он не предназначен, чтобы сделать все для вас.

Единственный способ, которым я вижу, что вы обладаете таким большим контролем в админе, - это не подключать A.

«Если вы не доверяете U, просто лишите его доступа к административной области». Вид глупой доктрины.

Не совсем, если учесть, что администратор не предназначен для обеспечения необходимого уровня усиления безопасности, чтобы гарантировать точный уровень контроля доступа. В администраторе есть много мест, из-за его открытого и расширяемого характера, где могут скрываться ошибки (обычно в пользовательском коде), которые могут быть использованы злоумышленниками. Вот почему ненадежные пользователи всегда должны видеть, что все админские URL возвращают 404.

В любом случае, когда требования к контролю доступа настолько детализированы, маловероятно, что подойдет общее (т.е. django.contrib) решение.

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