2012-05-08 10 views
0

私が知る限り、djangoで使用できる権限レベルは3つあります(django自体でも、サードパーティアプリケーションでも可能です)。 1)モデルベースの許可 2)オブジェクトベースの許可 3)行ベースのアクセス許可Djangoのさまざまな権限レベルの相違点

あなたは私の許可制度のこれらの3つのレベルの間の正確な違いを伝える場合、それは素晴らしいことです。

+1

許可レベルのヒントを教えてください。 – sergzach

+0

ネットには多くの情報源があります。これは良い例です: http://djangopackages.com/grids/g/perms/ –

答えて

1

あなたはその情報がどこにあるのかわかりませんが、それは遠隔では正確ではありません。 Djangoは技術的に許可システムを持っていません。 auth contribアプリは「権限」のシステムを追加しますが、オプションであり、まったく別のもので置き換えることができます。 adminアプリ(また、contribパッケージ、およびオプション)はauthを使用していますので、Django管理者、またはauthパッケージをあなた自身のアプリケーションで使用している場合は、話すことができます。

には、UserGroupPermissionがあります。 Userは、 "スーパーユーザー"または "通常の"ユーザーフレーバーのいずれかになり、sync_db(authINSTALLED_APPSに含まれています)を実行すると、プロジェクトのすべてのモデルが自動的にPermissionを3つ取得します:can_add、can_change、およびcan_delete。 "スーパーユーザ"(is_superuser == True)とマークされたUserは、どのモデルでもアクションを実行できます。他のユーザーには、Permissionが明示的に割り当てられている必要があります。さらに、GroupにはPermissionが割り当てられており、に割り当てられたUserはこれらのアクセス許可を継承します。

したがって、ユーザーはモデルの操作、一部またはすべてのモデルの追加、変更、または削除の機能の組み合わせ、またはモデルを使用したすべての操作を行うことはできません。 「インスタンス」という意味で、「オブジェクトベースの」パーミッションの概念はありません。モデルのすべてのインスタンスを編集することも、モデルを編集することもできません。 「行ベース」のパーミッションの概念もありません。データベーステーブルの行は、単にモデルのインスタンスに過ぎません。

+0

しかし、以下のリンクによれば、私たちはオブジェクトベースの許可を持っています。 "Django-Authority"と "Django-Guardian"は、モデルベースのレベル以外の権限レベルを提供するために利用できるアプリケーションの例です。 http://djangopackages.com/grids/g/perms/ –

+0

これはDjangoとの関係がないことを除いて、Djangoに所属していない全く別のパッケージです。私が言ったように、 'auth'パッケージは、何か他のものに完全に置き換えられたり、単に何か他のもので補完されたりする可能性があります。しかし、その時点で、私たちはDjangoについてもう話していません。 –

+0

私はこれを知っています。だから私はオリジナルの投稿にサードパーティーのアプリを挙げたのです。 今、私は本当にこれらの権限レベルの違いを知る必要があります。現時点で最も人気があり、安定しているパッケージはどれですか? –

関連する問題