私はherokuで簡単なステージング環境を実行しています。現在、ある種の簡単な認証でアプリ全体をパスワードで保護しようとしています
すでにこれをサポートしている簡単なアプリまたはミドルウェアがあるかどうか疑問に思っています。Heroku / Cloudflare および django を使用してソリューションを探してみましたが、本当に簡単なことは何もありません。
ジャンゴ 1.3.1
私はherokuで簡単なステージング環境を実行しています。現在、ある種の簡単な認証でアプリ全体をパスワードで保護しようとしています
すでにこれをサポートしている簡単なアプリまたはミドルウェアがあるかどうか疑問に思っています。Heroku / Cloudflare および django を使用してソリューションを探してみましたが、本当に簡単なことは何もありません。
ジャンゴ 1.3.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に設定することは明らかなので、どちらのコードも変更する必要はありません。
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
decorator を使用します。