Django REST Frameworkでviewにアクセス制限を設定する。
2022/3/17
2022/3/17
Django REST FrameworkでAPIを作成していると「このviewの操作は管理者以外は利用させたくない」という場面があります。
そこでviewにアクセスするユーザーの制限をかける設定を調べてみました。
アクセス制限(Permissions)の設定をする方法
APIのviewにアクセス制限をつける方法には、「Viewクラスごとに設定する方法」と「デフォルトのアクセス制限の設定を変える方法」の2つのパターンがあります。
デフォルトの設定をする
「settings.py」にあらかじめ下記コードを記載すると、デフォルトの設定ができます。viewにアクセス制限の設定がない場合(permission_classesの記載がない場合)は、この設定が適用されることになります。
# viewへのアクセス制限のデフォルト設定
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated', # ←ここがデフォルトの設定になる
],
}
Viewクラスごとに設定する
Viewクラスにアクセス制限を設定したい場合は、「permission_classes」に記載します。
from rest_framework.permissions import AllowAny
from rest_framework import generics
from .serializers import PostSerializer
class PostListView(generics.ListAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
permission_classes = (AllowAny,) # ←ここ
アクセス制限(Permissions)の種類
種類 | 内容 |
---|---|
AllowAny | 誰でも利用できる |
IsAuthenticated | 認証済みのユーザーのみ利用できる |
IsAdminUser | 管理者権限を持つユーザーのみ利用できる |
IsAuthenticatedOrReadOnly | 認証済みのユーザーは利用できる それ以外のユーザーは読み取りのみできる(GETなど) |
DjangoModelPermissions | ※調べ中… |
DjangoModelPermissionsOrAnonReadOnly | ※調べ中… |
DjangoObjectPermissions | ※調べ中… |
「DjangoModelPermissions」「DjangoModelPermissionsOrAnonReadOnly」「DjangoObjectPermissions」は、まだ把握できていないので今後調べて更新する予定です。
詳しく知りたい方はこちらの記事を参考にしてみてください。
最近の記事
音楽生成AI「Suno」の使い方まとめ!作詞作曲が簡単にできる?
簡単に曲が作れるAIということでよく聞く「Suno(Chirp)」についてまとめました。
目次「Suno」とはテキストからさまざまな音声を生成する「Bark」歌詞から曲を生成する「Chirp」...
2023/11/24
2023/11/24
【Open AI】APIの料金まとめ|GPT・DALL·E・Whisperなど
Open AIのAPI(一部)の料金をまとめました。
参考のために日本円は「1ドル150円」で換算をしています。
目次Text generation: テキスト生成Assistants ...
2023/11/22
2023/11/22
【Next.js】Assistants APIの基本的なコードまとめ。
Open AIの「Assistants API」をNext.jsで使用する時の基本的なコードをまとめました。
目次Open AIのAPIセットアップ基本の使い方Threads: スレッドを作る...
2023/11/21
2023/11/21
【Next.js】Open AIのAPIでファイルをアップロードする方法。
今回は、Next.jsサイトからOpen AIのAPI(Upload file)で、ファイルをアップロードする方法を実装するのに時間がかかったのでその過程と最終コードをまとめます。(Vercelにデ...
2023/11/21
2023/11/22
「生成系AIのWEBプロダクトTOP50」をまとめてみる。
Andreessen Horowitzが出している記事で紹介されている「AIプロダクトの月間訪問者数ランキングTOP50」のサービスをまとめました。
目次ChatGPTcharacter.ai...
2023/10/3
2023/10/3
【Next.js 13】NextAuth+FireStoreにユーザー情報を保存する。
今回は、以下の3つをNext.js 13で実装するためのメモです。
Googleアカウントでログインできる
アカウント、セッション情報をFirestoreに保存する
サーバーサイ...
2023/7/12
2023/7/12