문제

애플리케이션의 뷰에 액세스하는 동안 제공된 자격 증명을 사용하여 로그인을 수행할 수 있는 방법이 django에 있습니까?

여기서 나의 동기는 다음과 같은 서비스를 사용하여 가용성을 모니터링하는 것입니다. 핑덤.가용성을 확인하려는 대부분의 URL은 다음과 같이 장식되어 있습니다. @login_required 이전에 로그인하지 않으면 액세스할 수 없습니다.

내 아이디어 솔루션은 GET 또는 POST 매개변수에 자격 증명을 제공하면서 내 뷰에 액세스하는 방법이 될 것입니다.또 다른 대안은 문제의 URL에 액세스하기 전에 로그인 및 세션 획득을 지원하는 사이트 가동 시간 모니터링 서비스일 수 있습니다.

업데이트

@Filip 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