問題タブ [django-rest-framework-permissions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
31244 参照

python - Django REST フレームワークのオブジェクト レベルの権限

リソース「ユーザー」にアクセスするために Django REST Framework を使用しています。

ユーザー情報は個人的なものであるため、管理者でない限り、GET リクエストでシステム上のすべてのユーザーを一覧表示することは望ましくありません。

ユーザーがIDを指定してログインしている場合、必要に応じて詳細を表示して修正(PUT POST DELETE)できるようにしたいと思います。

要約すると、管理者以外のユーザーには GET メソッドを許可せず、ログインしているユーザーの情報を表示するときに GET POST DELETE PUT を許可します。

カスタム権限クラスを作成しました:

これはうまくいきませんでした。has_permissionいくつかのデバッグの後、最初にチェックし、次にチェックすることがわかりましたhas_object_permission。したがって、最初のハードル GET を乗り越えなければ/user/、次の GET も考慮されません/user/id

これを機能させるにはどうすればよいですか?

私はModelViewSetsを使用していました。

ただし、リスト機能を詳細と分割すると、それらに個別のアクセス許可クラスを与えることができます。