2014-04-17 3 views
0

사용자가 특정 그룹의 회원이 아닌 경우 특정 페이지로 리디렉션해야합니다. 컨트롤러에 requires_membership 데코레이터를 사용하려고합니다. , web2py에서 auth.requires_membership 오류로 인해 특정 페이지로 리디렉션됩니다.

@auth.requires_membership(group_id='fornitori', otherwise='/failure-page') 
def index(): 
    return {} 

어쨌든,이 작동하지 않는, 그리고 코드를 찾고 : 내가 제대로 문서를 이해하면

, 나는 실패 페이지로 사용자를 리디렉션하기 위해 otherwise 매개 변수에 문자열을 지정할 수 있습니다 otherwise 인수는 requires_login 데코레이터에만 사용됩니다.

나는 잘못된 것을하고 있거나 web2py의 버그입니까?

이 리디렉션을 수행하는 다른 간단한 방법을 알고 있습니까?

답변

2

otherwise도이 데코레이터에서 작동하지만 실패가 로그인이 아닌 권한 때문일 경우에만 적용됩니다. 권한 부여 실패시 리디렉션을 조건부로 만들려면 두 가지 옵션이 있습니다. 먼저 auth.settings.on_failed_authorization은 함수가 될 수 있으므로 요청한 컨트롤러/함수/args를 확인하고 요청에 따라 다른 리디렉션 URL을 반환하는 함수를 작성할 수 있습니다. 둘째, 리디렉션 자체를 처리하는 자신의 "요구"기능을 작성할 수 있습니다.

def check_membership(): 
    if not auth.has_membership(group_id='fornitori'): 
     redirect(URL('default', 'other')) 

@auth.requires(check_membership) 
def index(): 
    etc. 
+0

감사합니다. 그것은 매력처럼 작동합니다! –

관련 문제