使用支持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第三方库


热门话题
内存Java分配:从预先存在/分配的池中分配对象   java使超级方法停止实现的方法   java需要算法帮助吗   Java中Eratosthenes的素数筛:一个谜题和一些优化   Json反序列化中的java错误   java编组具有对象字段的对象   java Android 2.2 SDK Droid X摄像头活动未正确完成   java匹配模式,除非匹配为空字符串   本地Java小程序被阻止   java试图从数据库中检索值并使用用户输入进行验证   Java继承:跨包的受保护访问   java多战争到Azure Web应用程序   如何将数组(而不是列表)从groovy传递到java方法中?   如果调用“saveAndFlush”方法,则使用@QueryHints的java JPA缓存不起作用   Android在激活和未激活时通过Java更改EditText重音的颜色