3 回答

TA貢獻1804條經驗 獲得超8個贊
只需添加另一個包裝即可捕獲json參數:
def requireAuthentication(json=False):
def decorator(fn):
def wrapper(**kwargs):
# Is user logged on?
if "user" in request.session:
return fn(**kwargs)
# No, return error
if json:
return {
"exception": "NotAuthorized",
"error" : "You are not authorized, please log on"
}
redirect('/login?url={0}{1}'.format(request.path, ("?" + request.query_string if request.query_string else '')))
return wrapper
return decorator
我已將您的原始requireAuthentication函數重命名為decorator(因為該函數所做的是它的修飾fn),并將舊函數重命名decorator為wrapper,這是通常的約定。
放在表達式之后的@任何內容,都首先求值以找到實際的裝飾器函數。@helpers.requireAuthentication()表示您要調用requireAuthentication,它的返回值將用作該@行所應用功能的實際裝飾器。
添加回答
舉報