![](/img/trans.png)
[英]How to check django-guardian get_objects_for_user permissions via ForeignKey
[英]django-guardian custom user permissions
我剛剛開始與django-guardian一起工作,並且立即遇到了一些障礙。 我通過擴展AbstractBaseUser類來使用自定義用戶。 我按照此示例設置了我的models.py和admin.py。 我還按照開發人員指南配置指南來設置監護人。
django-guardian拋出AttributeError: type object 'MyCustomUser' has no attribute 'groups'
每當我嘗試獲取與用戶有關的權限時, AttributeError: type object 'MyCustomUser' has no attribute 'groups'
錯誤(MyCustomUser是我的自定義用戶類),即,當我添加權限時,它直接進入guardian_userobjectpermission
表,像它應該的。 但是,對get_perms
調用將引發所提到的錯誤。
嘗試通過管理頁面編輯權限時,出現相同的錯誤。 (以編程方式添加的權限不在此處顯示。:/)我編寫了一個小型manage.py任務來對其進行測試:
class Command(BaseCommand):
def handle(self, *args, **options):
user1 = MyCustomUser.objects.filter(username='pankaj')[0]
checker = ObjectPermissionChecker(user1)
# model on which permissions are applied
stream = Stream.objects.filter(uuid='001')[0]
# works on the database level, doesn't show up on admin page
assign_perm('read_stream', user1, stream)
# error
print 'read_stream' in get_perms(user1, stream)
# error
print checker.has_perm('read_stream', stream)
# error
print checker.get_perms(stream)
# works on the database level, doesn't show up on admin page
remove_perm('read_stream', user, stream)
# ALWAYS returns True, irrespective of whether permission granted or not
print user.has_perm('read_stream', stream)
設置身份驗證后端可能存在問題。 我目前將其設置為:
AUTHENTICATION_BACKENDS =(
'django.contrib.auth.backends.ModelBackend', 'guardian.backends.ObjectPermissionBackend',
)
也許實現自定義用戶=>更改/實現自定義組? 目前,我在admin.py中具有admin.site.unregister(Group),但是更改它無濟於事。
正如開發人員警告的那樣 ,監護人可能與自定義用戶不兼容?
根據此處的 django-guardian文檔。 Gaurdian嚴重依賴django用戶模型的過時方式。 但是,如果您擴展了AbstractUser
模型,或者使用auth.Group定義了ManyToMany關系,則可以解決該問題。
django-guardian
嚴重依賴auth.User
模型。 具體來說,它是使用auth.User
和auth.Group
模型之間的關系auth.User
auth.Group
。 對於guardian
保持此關系至關重要- 沒有多對多用戶(自定義或默認)和auth.Group關系,django-guardian會崩潰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.