我曾使用过作为管理面板和API的Flask应用程序。我的管理面板包含登录页面和一堆管理员内容。因此,我不想将其公开到互联网上。管理员面板应该只能从内部网访问,但我的API应该可以通过互联网访问。
我有两台机器。一台是本地机器,另一台将在AWS托管。问题是两台机器中的代码相同,但一台将作为API,另一台将作为管理面板。 我的主管告诉我,我可以使用" Flask蓝图"实现我想要做的事情,但我想在开始实施之前确定。
Flask蓝图可以解决这个问题,还是有其他选择?
(我想到的一件事是将API与管理面板分成两个不同的Flask应用程序。这很容易做到并解决所有问题。但我现在无法做到这一点。)
答案 0 :(得分:0)
您可以在蓝图上使用before_app_request,并检查您的客户端IP是以192.168还是10.0或172.16开头
from flask import abort
@blueprint_1.before_request
def check_network():
if not request.remote_addr.startswith("192.168") or ...:
abort(404)
编辑:根据Blueprint文档before_app_request这样的函数在每个请求之前执行,即使在蓝图之外。 改为使用before_request(它将在blueprint_1 Blueprint上的请求之前执行...我编辑了我的代码......