Tôi đã gán quyền cho người dùng trong ứng dụng Django 1.5 của tôi. Khi tôi liệt kê tất cả các quyền của người dùng vớiDjango: user.has_perm luôn đúng và người dùng không phải là superuser. Tại sao?
In [1]: user.get_all_permissions()
Out[1]: set([u'profile.change_profile'])
Tôi có thể thấy một quyền (đúng và mong muốn). Người dùng cũng không phải là siêu người dùng chứ không phải là quản trị viên.
In [2]: user.is_superuser
Out[2]: False
Tuy nhiên, nếu tôi cố gắng sử dụng user.has_perm
, tôi luôn luôn có được True
như quay trở lại đối với bất kỳ yêu cầu sự cho phép đệ trình.
In [3]: user.has_perm('random_permission')
Out[3]: True
Hành vi tôi mong đợi nếu người dùng là siêu người dùng/quản trị viên. Tại sao người không phải là siêu người dùng luôn nhận được True
cho mọi yêu cầu? Tôi đã bỏ lỡ bất kỳ thiết lập nào?
Bạn có đang sử dụng mô hình 'Người dùng' tùy chỉnh hoặc Phụ trợ xác thực không? Có thể đọc trên các tài liệu ở đây: https://docs.djangoproject.com/en/dev/topics/auth/customizing/#handling-authorization-in-custom-backends –