django-sự cho phép là một ứng dụng Django để tăng cường hệ thống cho phép có hỗ trợ hệ thống cho phép sự cho phép đối tượng và dựa trên vai trò.
Cài đặt
django-sự cho phép là trong PyPI_ để ::
& Nbsp; pip cài đặt django-phép
& Nbsp; & nbsp; & nbsp; hoặc
& Nbsp; pips cài đặt git git +: //github.com/lambdalisue/django-permission.git#egg=django-permission
Nhanh chóng hướng dẫn
1. & nbsp; Thêm `` 'permission'`` để `` INSTALLED_APPS`` của bạn `` settings.py`` và xác nhận' 'django.contrib.auth' và 'django.contrib.contenttypes' là trong `` INSTALLED_APPS``
& Nbsp; & nbsp; & nbsp; .. Chú Ý ::
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; django-cho phép có thể sử dụng `django-fenicms
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; các thiết kế hình ảnh của trang change_list trong admin django nếu có. Thêm 'fenicms' để
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; `` INSTALLED_APPS`` bạn để cho phép AJAX phân loại, bổ sung, mở rộng các tính năng.
2. & nbsp; Thêm `` 'permission.backends.PermissionBackend'`` để `` `AUTHENTICATION_BACKENDS`` của bạn` settings.py``. Nếu bạn không thể cài đặt hiện có, chỉ cần thêm đoạn mã sau ::
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; AUTHENTICATION_BACKENDS = (
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # 'Django.contrib.auth.backends.ModelBackend', & nbsp; & nbsp; # Không sử dụng phụ trợ này với RoleBackend
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'permission.backends.ModelBackend', # Sử dụng permission.backends.ModelBackend insted
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Permission.backends.PermissionBackend',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Permission.backends.RoleBackend',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; )
3. & nbsp; Thêm `` permissions.py`` đến thư mục chứa các `` models.py``. Và sau đây viết mã để bắt đầu ::
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; từ cho phép nhập khẩu đăng ký
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; từ cho phép nhập khẩu PermissionHandler
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; từ các mô hình nhập khẩu YourModel
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; lớp YourModelPermissionHandler (PermissionHandler):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "Xử lý Permission lớp cho` `YourModel``. Tương tự với AdminSite" ""
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def has_perm (self, user_obj, uốn tóc, obj = None):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "Này được gọi là kiểm tra sự cho phép của các mô hình." ""
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; nếu user_obj.is_authenticated ():
nếu perm == 'yourapp.add_yourmodel':
# Xác thực người dùng có thêm quyền truy cập của mô hình này
trở Đúng
elif obj và obj.author == user_obj:
# Nếu không (thay đổi / xóa) dùng phải là một tác giả
trở Đúng
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Người dùng không có sự cho phép của `` perm``
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; trở về False
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Đăng ký này `` `` YourModelPermissionHandler`` với YourModel``
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; registry.register (YourModel, YourModelPermissionHandler)
Role?
django-phép có vai trò hệ thống cho phép dựa. truy cập trang quản trị django của bạn để tạo / sửa đổi các vai trò (Xem ảnh chụp màn hình dưới đây).
Các điều khoản vai trò được xử lý với `` permission.backends.RoleBackend``.
.. :: Ảnh http://s1-01.twitpicproxy.com/photos/full/528601159.png?key=943727
& Nbsp; & nbsp; & nbsp; : Align: center
.. :: Ảnh http://s1-04.twitpicproxy.com/photos/full/528601385.png?key=9431458
& Nbsp; & nbsp; & nbsp; : Align: center
Hệ thống vai trò này đang được phát triển. Hệ thống này có thể không hoạt động chính xác chưa.
.. Chú Ý ::
& Nbsp; & nbsp; & nbsp; Vai trò hệ thống cho phép dựa trên không hỗ trợ các đối tượng được phép và không được phép giấu tên.
& Nbsp; & nbsp; & nbsp; Tuy nhiên những điều khoản được xử lý với các cá nhân xử lý dựa trên sự cho phép phụ trợ
& Nbsp; & nbsp; & nbsp; (`` Permission.backends.PermissionBackend``)
Làm thế nào để điều chỉnh cho phép sử dụng trong xử lý
`` PermissionHandler`` quyền chăm sóc liên quan với mô hình đăng ký chỉ trong mặc định. Thay đổi
hành vi này, bạn phải xác định `` thuộc tính permissions`` hoặc `` phương pháp get_permissions`` mà
trả về một chuỗi sự cho phép (như 'auth.add_user') danh sách.
`` Get_permissions`` trả về giá trị của `` permissions`` nếu thuộc tính được định nghĩa. Nếu không nó
trả lại tất cả các quyền liên quan đến các mô hình trong mặc định sử dụng phương pháp `` get_model_permissions``.
Các mẫu mã dưới đây cho thấy làm thế nào để xử lý tất cả các quyền truy cập của các ứng dụng của mô hình trong một
`` PermissionHandler`` ::
& Nbsp; & nbsp; & nbsp; từ cho phép nhập khẩu đăng ký
& Nbsp; & nbsp; & nbsp; từ cho phép nhập khẩu PermissionHandler
& Nbsp; & nbsp; & nbsp; từ các mô hình nhập khẩu YourModel
& Nbsp; & nbsp; & nbsp; từ các mô hình nhập khẩu HisModel
& Nbsp; & nbsp; & nbsp; từ các mô hình nhập khẩu HerModel
& Nbsp; & nbsp; & nbsp; lớp AppPermissionHandler (PermissionHandler):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; get_permissions def (tự):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # `` Get_app_permissions () `` phương thức hoàn trả tất cả các khoản có liên quan
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Để các ứng dụng của mô hình.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.get_app_permissions trở lại ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def has_perm (self, user_obj, uốn tóc, obj = None):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; nếu perm.endswith ('_ yourmodel'):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Tất cả người sử dụng có tất cả các quyền của `` YourModel``
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; trở Đúng
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; elif perm.endswith ('_ hismodel'):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; nếu user_obj.is_authenticated ():
# Người dùng chỉ chứng thực có mọi quyền cho `` HisModel``
trở Đúng
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; elif perm.endswith ('_ hermodel'):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; nếu user_obj.is_staff:
# Chỉ sử dụng đội ngũ nhân viên có mọi quyền cho `` HerModel``
trở Đúng
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; trở về False
& Nbsp; & nbsp; & nbsp; # Bạn phải đăng ký xử lý với các mô hình
& Nbsp; & nbsp; & nbsp; # Thậm chí AppPermissionHandler không quan tâm đến mô hình
& Nbsp; & nbsp; & nbsp; registry.register (YourModel, AppPermissionHandler)
& Nbsp; & nbsp; & nbsp; # Registry.register (HisModel, AppPermissionHandler) # hoặc bạn có thể đăng ký với HisModel
& Nbsp; & nbsp; & nbsp; # Registry.register (HerModel, AppPermissionHandler) # hoặc bạn có thể đăng ký với HerModel
Yêu cầu :
- Python
- Django
Bình luận không