Python 如何在瓶子中按路由过滤IP地址?

Python 如何在瓶子中按路由过滤IP地址?,python,bottle,Python,Bottle,MyBattlewebserver提供多种服务(路由)。其中一些必须限制为私有()IP,而另一些则同时服务于私有和公共IP 现在我在路线的开始处检查 if IPy.IP(bottle.request.remote_addr).iptype() == 'PRIVATE': # code for private service 我需要为每个仅限于私人IP的路由检查此项(10个案例和不断增长),而不需要为私人和公共IP(1个案例)检查此项 是否有可添加此决策树的路线的全局筛选器? 我特别想在

My
Battle
webserver提供多种服务(路由)。其中一些必须限制为私有()IP,而另一些则同时服务于私有和公共IP

现在我在路线的开始处检查

if IPy.IP(bottle.request.remote_addr).iptype() == 'PRIVATE':
    # code for private service
我需要为每个仅限于私人IP的路由检查此项(10个案例和不断增长),而不需要为私人和公共IP(1个案例)检查此项

是否有可添加此决策树的路线的全局筛选器?


我特别想在python应用程序中找到一种实现这一点的方法,而不是通过上游过滤反向代理。

我不知道内置了什么,但您可以使用。从decorator返回一个包装器,该包装器对IP类型执行检查,如果检查通过或出现错误消息(或类似消息),则返回常规视图。 以下方面应起作用:

def private_only(route):
    def wrapper(*args, **kwargs):
        if IPy.IP(bottle.request.remote_addr).iptype() == 'PRIVATE':
            return route(*args, **kwargs)
        else:
            return "Not allowed!"
    return wrapper
然后用它装饰您的私人视图:

@route('/my/internal/route')
@private_only
def internal_view():
    return some_data()