Полномочия пользователя Django Inlines + просматривают только - проблемы полномочий

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

Скажем, у меня есть модель A. Модель A является встроенной из модели B. У пользователя U есть полный доступ к модели B, но только измените полномочия на модель A (так, нет добавьте, ни удалите).

Однако при редактировании модели B, пользователь можно все еще видеть, "Добавьте другой" ссылка внизу, хотя U не имеет, добавляют полномочия для той соответствующей модели.

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

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

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

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

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

9
задан Vali 18 May 2010 в 14:14
поделиться

1 ответ

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

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

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

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

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

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

2
ответ дан 5 December 2019 в 02:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: