自定义访问应用程序

时间:2013-05-13 16:03:40

标签: django

我对Django和授权有一点疑问。 我有一个应用程序,必须通过某种组织的用户访问。 例如:如果用户在组织类型1中,他可以,否则,他不能。

我应该使用权限还是使用自定义中间件?

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/')