1
django restフレームワークでは、アクセス権が拒否されると、クライアントに401
を返します。アクセス許可の拒否HTTPステータスコード
しかし、これは隠されたアイテムには非常に悪いことです。 401
を送信することにより、ユーザーには実際には何かが存在することを認めます。
代わりに特定の権限で404
を返すことができますか?これは例えば1:
class IsVisibleOrSecretKey(permissions.BasePermission):
"""
Owner can view no matter what, everyone else must specify secret_key if private
"""
def has_permission(self, request, view):
return True
def has_object_permission(self, request, view, obj):
key = request.query_params.get('secret_key')
return (
obj.visibility != 'P'
or
request.user == obj.user
or
obj.secret_key == key
)