Django 1.2+ の 3 つの行レベルのアクセス許可ソリューションを見つけました
他よりも推奨されるものがあるかどうか、主な違いは何かなどを誰か教えてもらえますか?
Django 1.2+ の 3 つの行レベルのアクセス許可ソリューションを見つけました
他よりも推奨されるものがあるかどうか、主な違いは何かなどを誰か教えてもらえますか?
まず、オブジェクト レベルのアクセス許可にこれらのいずれも使用していないということから始めましょう。オブジェクト レベルのアクセス許可をまったく回避できる場合は、そうしてください。整理するのは面倒です。
これが、あなたが言及した3つのアプリを評価する方法です。
活発な開発:
API
ちなみに上は順番です。
私はガーディアンを純粋に API だけで使用することをお勧めしますが、ガーディアンがまだ開発中であるという事実は、通常は他の製品が開発されていないことを意味します。
2013 年 8 月の時点で、django-object-permissions はdjango-permissionに取って代わられました。3 つのプロジェクトが活発に開発されています。
個人的には、データベースを使用してパーミッションを保持する django-guardian よりも、パーミッション (ランタイム) をチェックするためのメソッドを使用する権限またはパーミッションを好みます(オブジェクトの作成時に添付されます、fe)。
- 編集 -
ドキュメントの例。
joe = User.objects.create(username='joe')
task = Task.objects.create(summary='Some job', content='', reported_by=boss)
joe.has_perm('view_task', task)
>> False
assign_perm('view_task', joe, task)
joe.has_perm('view_task', task)
>> True
アクセス許可を割り当てて、データベースに保持します。
宣言:
class FlatpagePermission(permissions.BasePermission):
label = 'flatpage_permission'
checks = ('morning_flatpage_check',)
def morning_flatpage_check(self, flatpage):
hour = int(datetime.datetime.now().strftime("%H"))
if hour >= 8 and hour <= 12 and flatpage.url == '/about/':
return True
return False
authority.register(Flatpage, FlatpagePermission)
使用法:
def my_view(request):
check = FlatPagePermission(request.user)
flatpage_object = Flatpage.objects.get(url='/homepage/')
if check.morning_flatpage_check(flatpage=flatpage_object):
print "Yay, you can change *this* flatpage!"
また、標準の django アクセス許可をラップしますが、ガーディアンでは実行できない上記のカスタム アクセス許可の柔軟性を見ることができます。
生徒はクラスルームに所属できます。
ガーディアン:
'attend_classroom'
Classroom オブジェクトに対して Student に権限を付与します。'attend_classroom'
Classroom オブジェクトに対する Student へのアクセス許可を削除します。'attend_classroom'
権限を確認してください。権限:
ClassroomPermission.can_attend_classroom()
Student が Classroom に属しているかどうかを照会するカスタム権限を定義します。ClassroomPermission.can_attend_classroom()
権限は、チェック ロジックを別のファイルに保持します。ガーディアンには、コードの残りの部分を介してアタッチ/デタッチ権限が必要です。