2016-09-05 7 views
-1

私はDjango + DRF + Reactを学んでいて、いくつかのエンドポイントを保護する段階に達しました。保護するのが簡単で、権限だけなので、特定のオブジェクト(および管理者)を作成したユーザーだけが表示できます。私には難しい1つのエンドポイントがあります。これは、GET呼び出しだとのようなものを返します:私は要求を行ったユーザ(セッション認証)に基づいて、このエンドポイントを保護したいDjango Rest Framework - エンドポイントに最適な方法は?

{book: "Who am I and how come", 
id: "whatever31", 
reading: ["user1", "user2"]} 

をこれだけuser1user2から着信したコールは、また、(このオブジェクトにアクセスさらすことはできませんreadingフィールドですが、これはおそらく別の議論です)。 DRFビューのカスタム権限を使用する必要がありますか? querysetメソッドでフィルタを使用する必要がありますか?多分両方?ただデコレータを作成するなどの

+0

あなたは、コントローラ上のデコレータを作成するに見たことがありますか?これのような音がその場所になります。 http://stackoverflow.com/questions/5469159/how-to-write-a-custom-decorator-in-django – KVISH

答えて

1

カスタム許可、それらの両方が必要なものと一致:

class InReader(permissions.IsAuthenticated): 
    def has_object_permission(self, request, view, obj): 
     return request.user in obj.reading 
+0

そして、これらのオブジェクトをリストとして取得すると、許可に一致するものだけが返されると思いますか? – vicusbass

+0

これはtrueまたはfalseを返して、obj.readingリスト内のrequest.userに通知します。 – Windsooon

+0

あなたの例では、代わりに 'has_object_permission'を使うべきでしょうか?とにかく、ありがとう、良いアドバイス。 – vicusbass

関連する問題