6

ユーザーが作成したオブジェクトのみを編集できるようにするにはどうすればよいでしょうか? これを設定する最良の方法は何ですか?

私はdjango-rest-frameworkを使用していますが、ユーザーが「所有」していないオブジェクトの表示/編集を制限できる方法があるかどうか疑問に思っています.

class Video(models.Model):
    owner = models.ForeignKey(User)
    ...

したがって、ユーザー「x」は自分の owner_set 内の動画のみを編集できる必要があります。

4

1 に答える 1

3

おそらく、セッションがあり、認証モデルがオンになっていると思います。

すべてのビュー (REST および非 REST) で認証が必要であることを確認する必要があります。

REST 以外の場合は簡単です。どこでも基本的な@login-requiredデコレータを使用するだけです。

Django-REST フレームワークについては、http://django-rest-framework.org/library/authentication.html#module-authentication をお読みください

認証が実際に行われたことを確認するには、認証 mixin を使用する必要があります。

このフレームワークは、セキュアであるために SSL 接続を必要とする BASIC 認証をサポートしています。SSL を必要としない DIGEST 認証を実装することはそれほど難しくありません。

セッションは避けてください。ログインとログアウトは REST の原則に反します。フレームワークはセッションをサポートしていますが、理想的とは言えません。

すべてのリクエストが認証されると、ユーザーがわかります。

ユーザーを知っている場合は、user.video_set完全に機能します。ユーザーにクエリを実行していることを確認するために使用することもできますが、 orなどを使用Video.objects.filter(...)している場合は、コードが正しいことを確認する方が簡単です。user.video_set.get(...)user.video_set.filter()

関連するすべての承認チェックはビューで行われます。ModelResources のビューを提供しています。

これらは「クラスベースのビュー」です。ドキュメントはこちら: https://docs.djangoproject.com/en/dev/topics/class-based-views/#viewing-subsets-of-objects

秘訣は、適切なミキシングとシリアライザーをすべて選択することです。

たとえば、次のように get 処理を混在させることができます。

http://django-rest-framework.org/howto/mixin.html

getメソッドでフィルターを実装します

于 2012-01-21T02:17:19.577 に答える