Django権限設定と認証方式


Modelsを作成すると、データベースに同期して、djangoはデフォルトで三つの権限を設定します。add、change、deleteの権限です。しかし、時々、全然足りなくて、自分でシナリオを書いて、権限の設定をすることができます。
DJ angoの公式文書によると、権限はすべてmodelsと関係があります。この時、もしviewを設定したいなら、権限のあるユーザーを実行して、権限のないユーザーを制限します。
権限を検証する方法は一般的に二つあります。一つは@permission(u)を使うことです。requiredは検証に来て、第二はuser.has_を使います。perm()は関数で検証し、戻るTrueまたはFalseで次のステップを行います。
同時に、私の少し複雑なのはdjangoに第三者認証oauth 2を加入して、国境を越えてアクセスする資源を制限しています。具体的には前の文章を見てください。
具体的な手順は以下の通りです。
ステップ1:
ドメインをまたぐリソース範囲を設定します。
CORS_URLS_REGEX=r'^/(o|api/oauth/).*'
璜はドメインをまたいでurlにアクセスすることができるだけです。/o/…あるいは/api/oauth/…の資源です。
ステップ2:
permissionスクリプトを設定するか、または自分でモデルを作成して、djangoデフォルトで提供される3つの権限をmigrateに与えます。もちろん、これは煩雑すぎて、シングルでもあります。permissionをカスタマイズできます。あなたが作成したmodelにMetaクラスを追加して、あなたの定義permissionを作成します。

      class **Model():
        ....
        class Meta:
        permissions = (
          (can_read'', '  '),
          (can_delete'', '  '),
        )
あるいは、あなたは自分でpermissionを作成するファイルを書くことができます。ここで、私の需要はユーザーによって資源にアクセスするかどうかを制限し、直接User上でpermissionの設定を行います。以下の通りです。

from django.contrib.auth.models import Permission, User
from django.contrib.contenttypes.models import ContentType
 
def run(codename, name):
  content_type = ContentType.objects.get_for_model(User)
  permission = Permission.objects.get_or_create(codename=codename, name=name, content_type=content_type)
  return permission
runを実行すると、指定されたcodenameのpermissionを作成できます。これはユーザーと結合されています。
ステップ3:
認証権限は、最も主要な方法は二つあります。装飾器の方法を使うか、それとも関数の中でhas_を使うかです。perm/has_私はここで飾り物の方法を使っています。もちろん最初に自分で手書きで飾り物を確認しましたが、djangoには持っているものがあります。使いやすいです。直接にviews関数でお金を使います。required(perms)でいいです。
ここではdjangoの視通関数を使っていますので、直接関数の前に@permissionをつけられません。required(perms)は、関数装飾器を方法またはクラス装飾器に変える方法を必要とします。djangoは@method_を持参しています。decorator、
使い方は以下の通りです

class LimitView(ProtectedResourceView):
  @method_decorator(permission_required(per_list[0]))
  def get(self, request):
    ....
LimitViewは自分のビュー関数として、oauthからProtect edsource Viewを継承しています。ビューの保護機能はユーザーに閲覧を許可されません。permission_。requiredパラメータはユーザーに必要な権限です。もしあれば、正常にアクセスできます。さもなければ、ログインページにリダイレクトされます。あるいはここで自分でページを指定できます。
注意したいのは@permission_を使うことです。required(perms)の時にrequest.userにフィールドが必要です。そうでないとエラーが発生します。ここにログインしなくてもアクセスできるのは、ユーザが許可したライセンスコードを使ってアクセスしたからです。直接にrequestの中にuserフィールドを設定します。このaccess_です。token対応のuser.
追加知識:djangoユーザーに権限があるかどうかを確認します。
ビューで権限があるかどうかを判断します。

{% if request.user.has_perm('app.   ')%}
……
 {%endif%}
htmlで権限によってコントロールが表示されているかどうかを判断します。
{%if perms.appname.co dename%
{%endif}
注:htmlの変数が有効になるには、Request Contectに伝えなければなりません。view.pyの中には必ずrenderでなければなりません。
djangoドキュメントを参照してください。https://docs.djangoproject.com/en/2.1/topics/auth/default/#permissions
以上のDjango権限の設定と検証方法は小編集が皆さんに提供した内容を全部共有しました。参考にしていただければと思います。よろしくお願いします。