【发布时间】:2012-05-24 15:53:01
【问题描述】:
我正在开发一个验证 api 令牌的装饰器,我的第一个任务是以最小的工作顺序获取装饰器:
def check_token(view_method):
@wraps(view_method)
def wrapped_view(*args, **kwargs):
token = request.args['token']
if token is None:
abort(403)
return view_method(*args, **kwargs)
return wrapped_view
这种工作方式,即如果提供了令牌,则视图工作,但如果没有提供 400 Bad Request 错误。我想发送一个 403 错误,但我还没有意识到这一点。
这有什么问题,它只返回 400 错误?我该如何改进?
【问题讨论】:
-
可能是因为
token = request.args['token']本身在到达abort(403)之前就抛出了KeyError? -
我的意思是
request.args中没有密钥token。试试request.args.get('token', None)看看是否可行。 -
我想这是我目前不知道的,让我们试试吧。
-
这行得通,所以如果您在下面回答,我会勾选它。 request 是一个 Werkzeug MultiDict,因此我需要完善我对它和 python 的理解,谢谢。