2013-05-13 69 views
0

我對Django和授權有點疑問。 我有一個應用程序必須可以通過用戶在某種組織中的用戶訪問。 例如:如果用戶在組織類型1中,他可以,否則他不能。自定義訪問應用程序

我應該使用權限還是使用自定義中間件?

+0

你可以使用'group'和'permissions'在'django.contrib.auth' – karthikr 2013-05-13 16:05:37

+0

組織在一個應用程序管理,我不想使用組來做到這一點 – billyJoe 2013-05-13 16:16:33

回答

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