質問

アプリケーション内のビューにアクセスしながら提供された資格情報を使用してログインを実行するためのDjangoにはありますか?

私の動機ここでは、 pingdom などのサービスを使用した可用性監視です。私は彼らの可用性を検証したいのは、私が以前にログインしたことがない限りアクセスできない@login_requiredで飾られています。

私のアイデアソリューションは、GETまたはPOSTパラメータに資格情報を提供しながら、私のビューにアクセスする方法です。他の代替案は、おそらく、問題のURLにアクセスする前にログインしてセッションを取得するサイトの稼働時間監視サービスであり得る。

更新

@フィップDupanovićの方向とここに私の単純な作業ミドルウェアは次のようになります:

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を追加しました。

役に立ちましたか?

解決

あなたは最も確かにできます!カスタムミドルウェアクラスこれは、要求オブジェクトを調べ、認証情報を取得し、要求がprocess_requestで装飾されたビューにルーティングされる前にユーザーに署名することができるカスタムlogin_requiredメソッドを実装しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top