>  기사  >  백엔드 개발  >  Django 서버는 원격 사용자를 통해 서로의 메소드를 호출합니다.

Django 서버는 원격 사용자를 통해 서로의 메소드를 호출합니다.

高洛峰
高洛峰원래의
2017-03-27 16:47:171817검색

우선 시나리오는 다음과 같습니다. 두 개의 django 웹 애플리케이션이 있고 두 애플리케이션 사이에 특정 연결이 있습니다. 어떤 경우에는 서로가 상대방의 데이터를 얻어야 합니다.

그러나 우리 애플리케이션에는 확실히 상응하는 인증 메커니즘이 있을 것입니다. 사람들이 함부로 방문하게 놔두지는 않겠죠? 예를 들어, 버스를 타려면 카드를 긁어야 합니다(어, 경로자 카드~~~). 우리는 브라우저 사용자가 로그인한 후 각 요청에 해당하는 세션이 있고 서버는 사용된 세션을 기반으로 사용자의 권한 정보를 결정할 수 있다는 것을 알고 있습니다. 하지만 서버 측에서 사용하기가 쉽지 않고, 세션 만료 시간 등의 문제가 있을 수 있습니다.

그래서 django 공식 문서를 확인해 보니 django가 서버 간 원격 호출을 지원할 수 있는 원격 사용자 메커니즘을 제공한다는 것을 알게 되었습니다. 설정에 다음 설정만 추가하시면 됩니다:


MIDDLEWARE_CLASSES = (
    '...',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.RemoteUserMiddleware',
    '...',
)

AUTHENTICATION_BACKENDS = (
   'django.contrib.auth.backends.RemoteUserBackend',
)

즐겁게 테스트해 보았는데 여전히 작동하지 않더군요~~~(그럴 줄 알았습니다) 그리 간단하지 않습니다)

한 단계만 남았습니다. 설정에 한 줄을 추가하고 환경 변수에 REMOTE_USER라는 사용자 이름을 추가합니다. jerry는 시스템에 이미 존재하는 사용자입니다.


os.environ['REMOTE_USER'] = "jerry"

완료되었으므로 요청에 세션 정보가 없거나 세션을 통해 사용자가 로그인되지 않은 것으로 판단되면 위의 REMOTE_USER 사용자가 자동으로 사용됩니다. 로그인합니다. 이런 방식으로 공용 탑승권이 있지만 보안을 위해 이 사용자에 대해 일부 권한 제한을 설정해야 할 수도 있습니다. (이렇게 차에 타도 아무것도 안하고 서있을 수 밖에 없잖아요, ㅎㅎ)

하지만 이것도 문제가 될 수 있습니다. 예를 들어 현재 사용자가 로그인되어 있는지 판단할 수 있습니다. 다른 인터페이스에서는 로그인 화면으로 이동하여 시작하세요. 그러나 REMOTE_USER를 사용한 후에는 자동으로 로그인되며 로그인 페이지로 이동할 수 없습니다. 이를 위해서는 사용자 로그인 로직을 재설계해야 합니다.

위 내용은 Django 서버는 원격 사용자를 통해 서로의 메소드를 호출합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.