アプリケーションのビューにアクセスしているときに提供された資格情報を使用してログインを実行する方法はdjangoにありますか?
ここでの私の動機は、Pingdomなどのサービスを使用した可用性の監視です。可用性を検証したいURLのほとんどは、@login_required
以前にログインしていない限りアクセスできないようにするで装飾されています。
私のアイデアソリューションは、GETまたはPOSTパラメーターでクレデンシャルを提供しながらビューにアクセスする方法です。別の代替手段は、問題のURLにアクセスする前にログインしてセッションを取得することをサポートするサイト稼働時間監視サービスである可能性があります。
アップデート
@FilipDupanovićの指示とここからのコードのおかげで、私の単純な動作ミドルウェアは次のようになります。
from django.contrib.auth import authenticate, login
class AuthenticationEverywhereMiddleware(object):
"""
Middleware to allow logging in by supplying login credentials in any URL
"""
def process_request(self, request):
if (request.GET.get('authenticateEverywhere','') == 'GET'):
username = request.GET['username']
password = request.GET['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
またはパラメーターauthenticateEverywhere
を使用する可能性のあるビューとの衝突を防ぐために、トリガーパラメーターを追加しました。username
password