私はDjangoを自分自身で学習しており、より高度なトピックを取得しています。あなたが行うことができることは、あなたのpermissions.pyファイルにこれのための関数を作成することです。そのよう:パーミッションクラスを扱うとき
from rest_framework import permissions
class specialMobileUserPermissions(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
if request.method in request.SAFE_METHODS:
return True
if request.user.id == whatever your mobile users id is:
return false
return obj.id == request.user.id # if the user is a subscribed user and they are logged in return true
return false # because we need a way out if none of the above works
のでpermissions.SAFE_PERMISSIONSは非破壊ある権限のリストです。したがって、最初のif文がGET、HEAD、または他の非データ変更メソッドかどうかを尋ねます。そうならtrueを返します。
2番目のifステートメントは、要求を行っているユーザーのユーザーIDをチェックします。そのユーザーIDがモバイルトレイルユーザーに設定したユーザーIDと等しい場合、このクラスが使用されているすべてのアクセス許可を拒否するfalseを返します。
あなたはあなたが必要なものがすべて、ダウン輸入にすべての方法である必要があり、余分な機能を、必要な場合を除き
from . import permissions # your permissions.py file
class FooViewSet(viewsets.ViewSet):
permission_classes = (permissions.specialMobileUserPermissions,)
以下のようなpermissions_classes変数を追加する必要がありますあなたのビューセットで
。私は助けてくれることを願っています。
ありがとうございます。私が理解しているように、一種のモバイルIDを作成し、ログに記録されていないユーザーにSAFE_METHODSを使用させる必要があります。しかし、投稿をすることができればそれを安全にするために一種の秘密の暗号化されたモバイルIDを提供するか、まったくそれをすることをお勧めしませんか? –
idがユーザデータベースのプライマリキーであるため、モバイルトライアルユーザを作成してプライマリキー(そのユーザのID)を取得し、2番目のif文を に変更したい場合はobj.id = = id: –