Python 组合web2py身份验证装饰器

Python 组合web2py身份验证装饰器,python,web2py,Python,Web2py,在web2py中,我试图将两个身份验证装饰器组合到一个方法中 @auth.requires_permission('read', 'inv_header') @auth.requires_permission('read', 'inv_detail') 我的理解是,我是这样做的: @auth.requires(auth.requires_permission('read', 'inv_header') and \ auth.requires_permission('read', 'inv_de

在web2py中,我试图将两个身份验证装饰器组合到一个方法中

@auth.requires_permission('read', 'inv_header')
@auth.requires_permission('read', 'inv_detail')
我的理解是,我是这样做的:

@auth.requires(auth.requires_permission('read', 'inv_header') and \
auth.requires_permission('read', 'inv_detail'))
但我得到了这个错误

Traceback (most recent call last):
  File "/opt/web-apps/web2py/gluon/restricted.py", line 224, in restricted
    exec ccode in environment
  File "/opt/web-apps/web2py/applications/niptview/controllers/batch.py", line 317, in <module>
  File "/opt/web-apps/web2py/gluon/globals.py", line 393, in <lambda>
    self._caller = lambda f: f()
  File "/opt/web-apps/web2py/gluon/tools.py", line 3437, in f
    flag = condition()
TypeError: decorator() takes exactly 1 argument (0 given)

@auth.requires
内部,您必须使用
auth.has_权限
,而不是
auth.requires_权限
(后者是装饰者)。

谢谢。这在web2py书的compbiningrequirements()一节中是一个很好的例子。
web2py™ Version 2.9.12-stable+timestamp.2015.01.17.06.11.03
Python  Python 2.7.5: /usr/bin/python (prefix: /usr)