Aka*_*sha 33 django django-apps django-authentication django-permissions
我已经为Django 1.2+找到了3个行级权限解决方案
有人可以告诉是否有任何推荐比其他人更多,他们的主要区别是什么,等等?
Jos*_*ton 24
我将通过说我们不使用这些对象级别权限来启动它 - 我们使用自己的自定义方法,我真的希望我们没有.如果你可以完全避免对象级权限,那么这样做很难组织起来.
这就是我评估你提到的3个应用程序的方法.
积极发展:
API
顺便说一句,以上是顺序.
我纯粹仅仅依靠API推荐监护人,但事实上它仍在开发中,而其他人通常并不意味着大赢.
laf*_*ste 19
至于2013年8月,django-object-permissions已被django-permission取代.这三个项目正在积极发展.
就个人而言,我更喜欢权限或权限,它使用方法来检查权限(运行时),而不是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
Run Code Online (Sandbox Code Playgroud)
您分配权限并将其保留在数据库中.
宣言:
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)
Run Code Online (Sandbox Code Playgroud)
用法:
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!"
Run Code Online (Sandbox Code Playgroud)
它还包含标准的django权限,但您可以看到上述自定义权限的灵活性--AFAIK-您无法在监护人中执行.
学生可以属于课堂.
监护人:
'attend_classroom'学生课堂"对象的权限.'attend_classroom'Student over Classroom对象的权限.'attend_classroom'权限.权威:
ClassroomPermission.can_attend_classroom(),该权限将查询Student是否属于Classroom.ClassroomPermission.can_attend_classroom()权限将检查逻辑保存在单独的文件中.Guardian需要通过其余代码附加/分离权限.
| 归档时间: |
|
| 查看次数: |
9885 次 |
| 最近记录: |