2017-05-23 12 views
0

私は現時点でDjangoの認証を学んでいます。
しかし、私はモデルベースでも少しそうだと指摘しました。モデルベースではないDjangoの認証

私は、2つのWebページ(監視、統計)があり、どちらも同じモデル(イベントテーブル)を使用しているとします。私が望むのは、さまざまなユーザに、アクセスや統計にアクセスする権限を追加することです:can_use_monitoring、can_use_statistics。
これらの2つのアクセス許可に同じモデルを追加することは問題ではないと思われますが、不要で誤解を招くようです。または私は何かを逃していますか?

これはどのように実現しますか?

おかげで、
V.

/////// UPDATE /////////
一つの思考:私が望むことは、Webページに基づいて権限を持っていることですし、モデルではありません。 1つのページでより多くのモデルを使用する可能性があり、どのモデルを許可するかはわかりません(1つしかできないため)。

答えて

0

これら2つのアクセス許可に同じモデルを追加することは問題ありませんが、不要で誤解を招くようです。または私は何かを逃していますか?

はい同じモデルを異なる権限に追加することは問題ありません。

通常、Django's Groups機能を使用する必要があります。アクセス許可のバンドルを持つグループを作成し、ユーザーをグループに追加し続けます。

https://docs.djangoproject.com/en/1.11/topics/auth/default/#django.contrib.auth.decorators.user_passes_test

一つの思考:私が望むことは、Webページ上ではなくモデルに基づいた権限を持つことです。 1つのページでより多くのモデルを使用する可能性があり、どのモデルを許可するかはわかりません(1つしかできないため)。

これは、user_passes_testまたはpermission_requiredデコレータであなたのビューを飾ることによって可能になりました。 More here.here

例えば

from django.contrib.auth.decorators import user_passes_test 
@user_passes_test(email_check) 
def my_view(request): 
    ... 

def email_check(user): 
    return user.email.endswith('@example.com') 
+0

返事をありがとうNoshのを!私は答えに基づいて、他の方法はありませんが、モデルから始めると思います。オリジナルの質問の更新セクション(同じモデルを使用している2ページあり)で説明したケースをどのように処理しますか? 「can_use_monitoring」権限を追加し、使用されているモデルの1つを選択するだけです。 – Viktor

+0

はい、djangoのアクセス許可APIを使用してユーザーを管理する場合。コンベンションでは、あなたが扱っているグループで最も重要なモデルを使用することです。あるいは単に 'user_passes_test'を使ってカスタム関数を渡すこともできます。例:ユーザが 'system-admins'のようなグループに属しているかどうかをチェックする機能。 – Nosh

+0

ok、ありがとうございました! – Viktor

関連する問題