重定向到web2py上auth.requires_membership失败的特定页面

时间:2014-04-17 17:28:18

标签: python authorization web2py

如果用户不是特定组的成员,我必须重定向到特定页面。 我正在尝试在我的控制器上使用requires_membership装饰器。

如果我正确理解文档,我可以在otherwise参数中指定一个字符串,以便在失败时将用户重定向到页面:

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

无论如何,这是行不通的,看看代码,看来else参数只用于requires_login装饰器。

我做错了什么或者是web2py上的错误?

你知道其他一些简单的方法吗?

1 个答案:

答案 0 :(得分:3)

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.