Django プロジェクトでオブジェクトごとの権限を実装するために django-guardian を使用しています。匿名ユーザーが表示できるオブジェクトを登録ユーザーが表示できないという問題が発生しました。私は、匿名ユーザーが許可を持っている場合、登録ユーザーも同じ許可を持っているべきだと考えていました (匿名ユーザーが何かを実行できるようにして、登録ユーザーが実行できないようにする私の Web サイトの一部を想像することはできません)。何かをする)。
from core.models import MyObject
from django.contrib.auth.models import User
from guardian.shortcuts import
from guardian.utils import get_anonymous_user
m = MyObject.objects.get(id=1)
u = User.objects.get(username="MyUser")
anon = get_anonymous_user()
anon.has_perm('view_object', m)
# ^ Prints True
u.has_perm('view_object', m)
# ^ Prints False
私のプロジェクトには、「パブリック」または「プライベート」にできるオブジェクトがいくつかあります。ユーザーがオブジェクトを「公開」としてマークすると、匿名ユーザーに「view_object」権限が付与されます。PermissionRequiredMixin
私のビューは、次のようにを使用して保護されています。
class MyObjectDetailsView(PermissionRequiredMixin, DetailView):
model = MyObject
permission_required = 'view_object'
Django Guardian は、登録ユーザーに匿名ユーザーと同じ権限を与える方法を提供していますか? あるいは、PermissionRequiredMixin をサブクラス化して、ユーザーには権限がなく、匿名ユーザーには権限がある場合にアクションを許可する方法があるのでしょうか?