在django管理站点上强制使用ssl。
django-sslify-admin的Python项目详细描述
django sslify管理员
在django管理站点上强制使用ssl
安装
要安装django-sslify-admin,只需运行 pip install django-sslify-admin您将得到最新版本 自动安装。
使用量
修改django settings.py文件,并预先 sslifyadmin.middleware.SSLifyAdminMiddleware到您的 MIDDLEWARE_CLASSES设置:
MIDDLEWARE_CLASSES=('sslifyadmin.middleware.SSLifyAdminMiddleware',# ...)
注意:确保sslify.middleware.SSLifyMiddleware是第一个 列出了中间件类,因为这将确保如果用户 不安全请求(通过http),它们将在 任何实际的处理都会发生。如果你打算使用 `i18n_patterns<;https://docs.djangoproject.com/en/dev/topics/i18n/translation/#django.conf.urls.i18n.i18n_patterns>;。`_ 在管理url上,此中间件需要附加在 `django.middleware.locale.LocaleMiddleware<;https://docs.djangoproject.com/en/dev/ref/middleware/#django.middleware.locale.LocaleMiddleware>;`\
自定义管理URL?
如果使用自定义管理URL,则必须设置 SSLIFY_ADMIN_NAMESPACE在您的settings.py:
# SSLIFY_ADMIN_NAMESPACE = "admin" # defaultSSLIFY_ADMIN_NAMESPACE="myadminurl"# custom
启用/禁用
默认情况下,如果settings.debug为false,则管理员为sslfing,但对于 由于某些原因(如本地、测试套件),您可能希望删除调试而不触发sslify。 必须在settings.py中设置SSLIFY_ADMIN_DISABLE:
SSLIFY_ADMIN_DISABLE=True
在代理后面?(英雄)
如果你的django应用程序在代理(比如heroku)后面,那么 可能正在“吞噬”请求是https的事实,使用非https 代理和django之间的连接。
在这种情况下,您需要配置代理(heroku已经 为您设置一个自定义http头,告诉django 请求是通过https传入的,您需要设置 SECURE_PROXY_SSL_HEADER以便django知道要查找的头 因为,像这样:
SECURE_PROXY_SSL_HEADER=('HTTP_X_FORWARDED_PROTO','https')
注释
此代码是从this StackOverflow thread获取并修改的。 这个项目也受到了兰德尔·德格斯的影响。 django-sslify,用这个, 如果你想保护你的整个网站,而不仅仅是管理界面 在Django。
如果你喜欢这个项目,请考虑给我一个 gittip谢谢!:)
测试
$ git clone https://github.com/return1/django-sslify-admin.git $ cd django-sslify-admin $ python setup.py develop ... $ python setup.py test Creating test database foralias'default'... .. ---------------------------------------------------------------------- Ran 2 tests in 0.003s OK Destroying test database foralias'default'...