【问题标题】:Password protect a whole django app密码保护整个 django 应用程序
【发布时间】:2012-11-13 10:09:35
【问题描述】:

我正在 heroku 上运行一个简单的暂存环境,我现在正在寻找通过某种简单的身份验证来保护整个应用程序的密码

我想知道是否有一个简单的应用程序或中间件已经支持这一点。 已尝试使用 Heroku / Cloudflare 和 django 寻找解决方案,但似乎没有什么是直截了当的。

Django 1.3.1

【问题讨论】:

标签: python django authentication


【解决方案1】:

我使用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,因此无需更改两者的代码。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多