Python FlaskAPI-验证哈希请求

Python FlaskAPI-验证哈希请求,python,python-3.x,flask,Python,Python 3.x,Flask,在我的FlaskAPI应用程序中,我想验证客户端发送的哈希。如果一个客户端发送了一个不正确的散列,我想立即返回一条错误消息。 散列是由客户端和我的应用程序共享的预定义计算生成的 在下面的示例中,它在控制器类中实例化,返回新配置的结果 在不为每个方法使用if语句的情况下,以干净、优雅和集中的方式验证散列(考虑到我有多个这样的方法)的最佳方法是什么 @app.route('/newRegistration', methods=['POST']) def new_registration():

在我的FlaskAPI应用程序中,我想验证客户端发送的哈希。如果一个客户端发送了一个不正确的散列,我想立即返回一条错误消息。 散列是由客户端和我的应用程序共享的预定义计算生成的

在下面的示例中,它在
控制器
类中实例化,返回
新配置
的结果

在不为每个方法使用if语句的情况下,以干净、优雅和集中的方式验证散列(考虑到我有多个这样的方法)的最佳方法是什么

@app.route('/newRegistration', methods=['POST'])
def new_registration():

    controller = Controller()
    return jsonify(controller.new_configuration(request.json))

注意:我的所有路由方法都调用
控制器
类。

Flask有
请求前
请求后
以及更多可以帮助您管理的功能

使用示例:

# routes that won't be hash validated 
PUBLIC_ROUTES = ["/favicon.ico", "/"]

@app.before_request
def validate_hash():
    # avoid validating on public routes
    for route in PUBLIC_ROUTES:
        if route == request.path:
            return

    hash = g.params.get("hash", None)

    # validate hash exists in request
    if not hash:
        raise BadRequestError("Missing hash")

    if hash != DEFAULT_HASH:
        raise UnauthorizedError("Hash is invalid")
在对未在
PUBLIC\u routes
中声明的flask路由的每个请求之前,将执行该方法,并尝试验证请求中接收的哈希参数

关于您的便笺,您可以在启动控制器的请求之前添加另一个
,并使用
flask.g
功能将其传递到流中的其他路由