一个django中间件,用于将传入的ip限制为django项目。

django-ip-restriction的Python项目详细描述


Django IP限制

国际贸易部Django IP白名单。django中间件,用于将django项目的传入ip限制为允许的ip或ip范围的列表。对管理员登录屏幕的访问和对经过身份验证的用户的访问是可配置的,因此可以对其进行设置,以便用户能够进行身份验证,并绕过站点的IP限制。

要求

  • python>;=3.3
  • django>;=1.9

快速启动

  1. 安装软件包:

    $ pip install django-ip-restriction
    
  2. 将中间件添加到您的设置中(注意:最少需要的其他中间件组件是django的sessionmiddlewareauthenticationmiddleware,它们默认添加到您的设置中):

    # Django 1.9
    MIDDLEWARE_CLASSES = [
        ...
        'ip_restriction.IpWhitelister',
        ...
    ]
    
    # Django 1.10+
    MIDDLEWARE = [
        ...
        'ip_restriction.IpWhitelister',
        ...
    ]
    

配置

打开或关闭并配置IP白名单可以通过django设置中的变量或通过环境变量来完成。django设置中的值优先于环境中的值。

通过RESTRICT_IPS打开/关闭中间件,默认值为false。在django设置中将此变量设置为true,或者在您的环境中设置truthy值(例如,“true”、“1”)。

单个IP可以通过ALLOWED_IPS白名单,它可以是django设置中的IP字符串列表,也可以是环境中以逗号分隔的IP列表,例如以下两个是等效的:

# in bash (spaces are disregarded, trailing commas are OK)
export ALLOWED_IPS='192.168.0.1, 192.168.0.2,192.168.0.3,'

# in settings.py (will override the above environment variable)
ALLOWED_IPS = ['192.168.0.1', '192.168.0.2', '192.168.0.3']

IP范围可以通过ALLOWED_IP_RANGES白名单,它可以是django设置中的IP范围字符串列表(CIDR表示法),也可以是环境中IP范围的逗号分隔列表,例如:

# in bash
export ALLOWED_IP_RANGES='192.168.0.0/8, 127.0.0.0/2'

# in settings.py
ALLOWED_IPS = ['192.168.0.0/8', '127.0.0.0/2']

无论白名单中的IP地址/地址如何,都可以使用^{TT4}$访问所有经过身份验证的用户。如果为true,这将允许任何超过IP限制的有效会话。

不管白名单中的IP地址/地址是什么,如果ALLOW_ADMIN是真的,那么也允许通过IP限制访问管理URL。

建议将ALLOW_ADMINALLOW_AUTHENTICATED都设置为true,并允许任何可以登录的用户首先只访问管理接口以进行身份验证,然后才能访问项目的所有URL。

仅限restict管理视图

若要限制管理视图,请仅设置变量RESTRICT_ADMIN_BY_IPSALLOWED_ADMIN_IPSALLOWED_ADMIN_IP_RANGES

贡献

欢迎捐款。请遵循以下指南,让生活更轻松:

  • 分叉回购,分支释放,进行更改,然后发出拉取请求(pr)以释放主回购
  • 包括任何新功能的文档
  • 请将PR更改限制为单个功能或单个错误修复程序
    • 为多个离散更改创建多个prs
  • 请挤压提交-理想情况下是一次提交,但至少达到合理的最小值
    • 如果一个pr合理地应该有多个提交,那么考虑一下它是否应该实际上是单独的prs

许可证

麻省理工学院许可。有关详细信息,请参阅捆绑的LICENSE文件 细节。

待办事项

  • 允许IP限制在黑名单模式下工作,而不仅仅是白名单模式
  • 在3.0+的多个python版本上运行持续集成
    • 当前仅在3.5.0上运行
    • 利用并行性
  • 在多个django版本上运行测试
    • 目前只与django 1.9竞争
    • 利用并行性

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中使用BufferedReader类读取文本文件的子字符串   java如何在JSP页面上包含来自另一台服务器的动态JSP   使用单表策略的java持久化Hibernate继承映射   java报告状态失败达600秒。谋杀!报告hadoop的进展   java将字符串解析为形状   使用JTable的java ClassCastException?   java在Spring引导中关闭数据库   java Android Studio调试错误(Ubuntu)   java如何区分apache beam中KV实例中的两个键?   java将RealmObjectChangeListener添加到异步下载的RealmObject   java匹配模式之前的所有内容,包括新行和/或回车   java使用JAXB在XML中动态更改元素序列   java如何在MACOS中找到动态库(.dylib文件)的版本   Android中的java Nanohttpd服务器   java libGDX:3d动画不工作