Simplish Flask methodview装饰器

时间:2012-05-24 15:53:01

标签: python decorator flask

我正在研究一个验证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错误?我该如何改进?

1 个答案:

答案 0 :(得分:3)

request.argsMultiDict,如果请求的密钥在dict中不存在则会引发。 request.args['token']abort(403)到达## If a 2nd optional argument is provided to dict.get then ## it does not raise if key is not found. Instead returns ## the 2nd argument passed as default. token = request.args.get('token', None) if not token: ## Error handling 之前会加注。很少有解决方案:

if 'token' not in request.args or not request.args['token']
    ## Error handling

或者:

{{1}}
相关问题