Djangoのパーミッション機能を使ってアクセス制限をかけてみる
前々回、前回に引き続きDjangoのパーミッションについて勉強する。
今回はDjangoのパーミッション機能を使ってアクセス制限をかけてみる。
公式ドキュメントは以下
docs.djangoproject.com
やること
「view_question」のパーミッションを持っていないユーザーの場合は、http://127.0.0.1:8000/polls/にアクセスした時に403を返すようにする。
実装方法
関数ベースViewの場合は以下のように書く。
※ クラスベースの場合は「PermissionRequiredMixin」を使うが特に難しくないので割愛。
from django.contrib.auth.decorators import login_required, permission_required from django.http import HttpResponse @login_required @permission_required("polls.view_question", raise_exception=True) def index(request): return HttpResponse("Hello, world. You're at the polls index.")
検証
「view_question」を付与されているユーザーと付与されていないユーザーを用意して、検証する。
・「view_question」を付与されているユーザーの場合
・「view_question」を付与されていないユーザーの場合
アクセス制限をかけることができた。