我在heroku上运行一个简单的staging env,我现在正在寻找密码保护整个应用程序的某种简单身份验证
我想知道是否有一个简单的应用程序或中间件已经支持这个。 尝试过使用Heroku / Cloudflare和django寻找解决方案,但似乎没有什么是直接的。
Django 1.3.1
答案 0 :(得分:12)
我将django-lockdown
用于此目的。它允许您在整个开发站点上添加一个简单的密码,而无需在您的视图中添加任何未在开发环境之外使用的额外auth位。这也意味着您可以以管理员身份登录,或者常规用户可以测试您网站的任何内容
https://github.com/Dunedan/django-lockdown
我在我的settings.py
文件中使用了Heroku和Lockdown这段代码
USE_LOCKDOWN = os.environ.get('USE_LOCKDOWN', 'False') == 'True'
if USE_LOCKDOWN:
INSTALLED_APPS += ('lockdown',)
MIDDLEWARE_CLASSES += ('lockdown.middleware.LockdownMiddleware',)
LOCKDOWN_PASSWORDS = (os.environ.get('LOCKDOWN_PASSWORD', 'False'),)
LOCKDOWN_URL_EXCEPTIONS = (r'^/some/url/not/locked/down/$',)
然后显然在我的开发站点上将USE_LOCKDOWN
的配置变量设置为True,在我的生产站点上设置为False,因此无需更改任何一个的代码。
答案 1 :(得分:0)
Django的身份验证框架具有内置实用程序@login_required
,可帮助您密码保护您的视图功能(当然还有相应的“url”)。
这样的用法: -
from django.contrib.auth.decorators import permission_required, login_required
@login_required
def view_organization(request, org_slug):
"""
Only permit a logged in user to view the organization.
"""
org = get_object_or_404(organization, slug=org_slug)
org_users = organizationuser.objects.filter(organization=org,\
organization__is_active=true)
template = 'organizations/view_organization.html'
template_vars = {'org_users': org_users, 'org': org}
return render(request, template, template_vars)
对于高级访问控制,请使用@permission_required
装饰器。