使用支持IP白名单的基本身份验证机制隐藏Django站点。

django-basic-auth-ip-whitelist的Python项目详细描述


这个简单的包提供了中间件,允许您设置基本身份验证 以及通过django设置的ip白名单。

用例

此包是为需要 完全隐藏在Internet的密码后面或只能访问 某些IP网络。

要求

  • Django 1.8、1.9、1.10、1.11、2.0、2.1或2.2。
  • python 3.4、3.5、3.6或3.7

安装

包裹打开了 PyPI所以你可以 如果有PIP,就安装。

pip install django-basic-auth-ip-whitelist

配置

在django设置中,您可以配置以下设置:

BASIC_AUTH_LOGINBASIC_AUTH_PASSWORD

要用于基本身份验证的凭据。

BASIC_AUTH_WHITELISTED_IP_NETWORKS

设置与python兼容的网络范围(字符串)列表 ipaddress.ip_network 您希望能够访问网站而无需验证 从。它必须是由逗号分隔的网络字符串,或者 Python可食。

BASIC_AUTH_REALM

指定默认响应领域的字符串。

示例设置

MIDDLEWARE+=['baipw.middleware.BasicAuthIPWhitelistMiddleware']BASIC_AUTH_LOGIN='somelogin'BASIC_AUTH_PASSWORD='greatpassword'BASIC_AUTH_WHITELISTED_IP_NETWORKS=['192.168.0.0/28','2001:db00::0/24',]

高级定制

获取IP

如果您希望在获取IP时具有自定义行为,可以创建 将请求作为参数并指定其路径的自定义函数 在BASIC_AUTH_GET_CLIENT_IP_FUNCTION设置中,例如

BASIC_AUTH_GET_CLIENT_IP_FUNCTION='utils.ip.get_client_ip'

BASIC_AUTH_WHITELISTED_HTTP_HOSTS

设置网站将在没有基本服务的情况下打开的主机列表 身份验证。如果您的网站托管在多个域中,则此功能非常有用 你只希望其中一个能被公开,例如通过搜索引擎。

这绝对不是安全功能。请不要用来保护您的 站点。

BASIC_AUTH_WHITELISTED_HTTP_HOSTS=['your-public-domain.com',]

BASIC_AUTH_WHITELISTED_PATHS

设置网站将在没有基本身份验证的情况下提供的路径列表。 这可用于支持API集成,例如与第三方集成 不支持基本身份验证的服务。

设置BASIC_AUTH_WHITELISTED_PATHS中列出的路径被视为根路径,任何子路径也将被白名单。例如:

BASIC_AUTH_WHITELISTED_PATHS=['/api',]

这将打开路径https://mydomain.com/api/,以及任何 在它下面,例如https://mydomain.com/api/document/1/

BASIC_AUTH_RESPONSE_TEMPLATE

如果你想在401页上显示不同的模板,请使用这个 设置为指向模板。

BASIC_AUTH_RESPONSE_TEMPLATE='401.html'

BASIC_AUTH_RESPONSE_CLASS

如果要指定自定义响应类,可以使用此设置执行此操作。 以字符串形式提供路径。

BASIC_AUTH_RESPONSE_CLASS='yourmodule.response.CustomUnathorisedResponse'

跳过中间件

您可以通过设置跳过中间件 跳过基本验证IP白名单中间件检查请求的属性 正确

setattr(request,'_skip_basic_auth_ip_whitelist_middleware_check',True)

如果您有其他想要的中间件,这可能很方便 共存不同的中间件,限制访问网站。

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

推荐PyPI第三方库


热门话题
CentOS上的java Spring Boot简易应用程序需要很长时间才能启动   java如何检查字符串值是否等于null?   收集器中的java映射值。分组方式()   java需要支持Azure AD B2C webapp集成   java如何加入线程以停止它?   java如何使用意图传递类的对象?   java如何在战争环境中发现CDI生产者?   多模块项目中java奇怪的编译器行为   java如何在web应用程序中管理密码?   java从http服务器、filehandler中删除冗余代码   java使用反射来获取泛型类的字段   java Spring MVC/Hibernate/MySQL 400错误请求错误   给定正整数a的java幂为3   在Java中将元素拆分为不同数量的列表?   java展开折叠窗格