如果用户不是特定组的成员,我必须重定向到特定页面。 我正在尝试在我的控制器上使用requires_membership装饰器。
如果我正确理解文档,我可以在otherwise
参数中指定一个字符串,以便在失败时将用户重定向到页面:
@auth.requires_membership(group_id='fornitori', otherwise='/failure-page')
def index():
return {}
无论如何,这是行不通的,看看代码,看来else参数只用于requires_login装饰器。
我做错了什么或者是web2py上的错误?
你知道其他一些简单的方法吗?
答案 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.