1

对于我的应用程序,我在 flask_session 的帮助下在数据库中管理服务器上的会话数据。

我想修改行为,以便仅当远程地址不在 IP 黑名单上时才创建会话。

我已经修改了 SessionInterface 的 open_session 以包括以下内容:

self.firewall = Firewall # flask_sqlalchemy model

def open_session(self, app, request):
    firewall = self.firewall.query.filter_by(ip_address=request.remote_addr).first()
    if firewall and firewall.black_list:
        abort(400)
    ...

为了标记更好的错误,我创建了错误处理程序:

@main.app_errorhandler(400)
def bad_request(e):
    return render_template("400.html"),400

数据库防火墙查找有效,并且按预期调用了 abort(400)。

问题是来自 open_session 的中止调用不会触发模板的使用。当从链接到应用程序的任何蓝图视图调用中止时,它确实使用模板。

如何强制使用我从 open_session 准备的中止模板?

4

0 回答 0