0

私は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エラーしか返さないのは何が問題なのですか? これを改善するにはどうすればよいですか?

4

1 に答える 1

3

request.argsはaMultiDictであり、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
于 2012-05-24T16:13:08.830 に答える