9

これがバグなのか、何かが足りないだけなのかはわかりませんが(インラインに関するドキュメントはすでに解析済みですが)、次のようになります。

モデルAがあるとします。モデルAはモデルBのインラインです。ユーザーUはモデルBへのフルアクセス権を持っていますが、モデルAへのアクセス許可のみを変更します(つまり、追加も削除もしません)。

ただし、モデルBを編集する場合、ユーザーUには、それぞれのモデルの権限を追加していなくても、下部に[別のAを追加]リンクが表示されます。

どうしたの?そのリンクが表示され続けるのはなぜですか?私の論理では、UにAを追加する権限がない場合、リンクは表示されないはずです。

また、理想的には、モデルAに対する表示権限のみをUに付与したいのですが(追加、削除、変更はできません。表示のみ)、その(私に言わせれば奇妙な)哲学について読んだことがあります。あなたはUを信用していません、ただ彼が管理エリアへのアクセスを一斉に拒否するだけです。」一種の愚かな教義。

現在、Uに変更権限を残し、すべてのフィールドを読み取り専用に設定することで、この「表示専用権限」をシミュレートしようとしています。しかし、これは一種のばかげたアプローチであり、上記の権限のような問題を引き起こす可能性もあると思います...

私のような平均的なDjangoプログラマーは、どのようにして表示専用のアクセス許可を取得しますか?そして何よりも、管理者編集フォームの下部にある[別のAを追加]リンクを削除するにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

2

管理者にあるものの読み取り専用バージョンが必要な場合は、通常のDjangoビューをいくつか記述して、管理者から除外します。

あなたが話しているようなこと(オブジェクトへの変更は許可するが、そのインラインは許可しない)は、管理者によって実際にサポートされているとは思いません。誤解しないでください。管理者は非常に柔軟で便利ですが、すべてを行うことを目的としたものではありません。

管理者でこれだけ多くの制御を行うことができると私が思う唯一の方法は、インラインAを使用しないことです。

「Uを信頼しない場合は、管理領域へのアクセスをすべて拒否してください」。一種の愚かな教義。

実際には、管理者が、きめ細かいレベルのアクセス制御を保証するために必要なレベルのセキュリティ強化を行うことを意図していないことを考えると、そうではありません。管理者には、そのオープンで拡張可能な性質のために、悪意のある攻撃者によって悪用される可能性のあるバグが潜んでいる可能性がある場所がたくさんあります(通常はユーザー作成のコードにあります)。これが、信頼できないユーザーが常にすべての管理URLが404を返すことを確認する必要がある理由です。

とにかく、アクセス制御の要件が非常にきめ細かい場合、一般的な(つまりdjango.contrib)ソリューションが適合する可能性は低くなります。

于 2010-06-22T03:31:05.593 に答える