我对Django和授权有一点疑问。 我有一个应用程序,必须通过某种组织的用户访问。 例如:如果用户在组织类型1中,他可以,否则,他不能。
我应该使用权限还是使用自定义中间件?
答案 0 :(得分:0)
使用user_passes_test
装饰器来完成它。
from django.contrib.auth.decorators import login_required,user_passes_test
def is_auth(u):
#u is the request.user
if user_auth_for_page(u):
return True
return False
def user_auth_for_page(u):
#your Authentication function here
#if user is in org1 return true
@user_passes_test(lambda u: is_auth(u),login_url='/home/')
@login_required
def page(request):
...
同样,最好的方法是将它与django组一起使用。
def is_auth(u,g):
l=u.groups.all()
for i in l:
if i.name==g:
return True
return False
@user_passes_test(lambda u: is_auth(u,'admin'),login_url='/home/')