保护整个Django应用程序的密码

6
我正在Heroku上运行简单的预发布环境,现在我想使用一些简单的身份验证来保护整个应用程序。我想知道是否有一个简单的应用程序或中间件已经支持这一点。我已经尝试过在Heroku / Cloudflare和Django上寻找解决方案,但似乎没有什么是直接明了的。Django版本是1.3.1。

2
这个对你有帮助吗?https://dev59.com/QXI95IYBdhLWcg3wxA4- - YardenST
2个回答

16

我为了这个目的使用django-lockdown。它允许您在整个开发站点上添加一个简单的密码,而无需在视图中添加任何额外的身份验证部分,这些部分在开发环境之外不会被使用。它还意味着您可以登录作为管理员或常规用户来测试您的网站功能。

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,因此无需更改任何代码。


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装饰器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接