동일한 브라우저에서 열리도록 동일한 서버의 다른 포트를 사용하는 Django 애플리케이션을 활성화하는 방법에 대한 자세한 설명

高洛峰
풀어 주다: 2017-03-08 10:06:04
원래의
1295명이 탐색했습니다.

동일한 서버의 서로 다른 포트에서 두 개의 Django 애플리케이션 site1과 site2가 동시에 실행되고 동일한 브라우저의 서로 다른 탭에서 동시에 로그인하는 경우입니다. 그러면 site2에 로그인하면 site1에 로그인한 사용자가 쫓겨나게 됩니다.

왜 이런 일이 발생하는 걸까요? 이것은 Django의 세션 프레임워크와 관련이 있습니다. 다음은 간략한 소개입니다. Django 웹사이트를 처음 방문하면 Django는 현재 세션에 대한 일부 정보를 저장하기 위해 세션을 생성합니다. 동시에 해시 값 session_key가 생성되고 쿠키가 생성되어 클라이언트로 전송됩니다. 이 쿠키의 이름은 설정의 SESSION_COOKIE_NAME에 따라 설정됩니다. 기본값은 "sessionid"입니다(강조 추가). 이런 방식으로 다음번에는 session_key가 쿠키와 함께 서버로 전송됩니다. 서버는 session_key를 기반으로 해당 세션 객체를 검색하고 로그인 정보를 포함한 현재 세션의 정보를 획득합니다.

그래서 위 상황에 대한 진실은 단 하나입니다(코난이 안경으로 얼굴을 밀어냅니다):

  1. site1에 로그인하면 sessionid라는 쿠키를 얻습니다. , session_key1을 저장합니다.

  2. site2에 로그인하면 sessionid라는 쿠키가 업데이트되고 이제 그 값은 session_key2입니다(브라우저는 포트가 아닌 IP 기반으로 쿠키를 저장하므로 동일한 이름이 쿠키가 업데이트됩니다).

  3. 이제 새 session_key를 사용하여 site1에 액세스하면 원래 로그인 정보를 얻을 수 없으므로 다시 로그인해야 합니다.

그럼 어떻게 해결할 수 있을까요? 위의 메커니즘을 이해한 후, 설정에서 SESSION_COOKIE_NAME만 설정하면 됩니다. 예를 들어 site2에서 SESSION_COOKIE_NAME = 'site2'를 설정하고 site1에서 기본값을 사용할 수 있습니다. 물론 site1과 site2를 동시에 설정할 수도 있습니다.

동일한 서버에서 다른 포트를 사용하는 Django 애플리케이션을 동일한 브라우저에서 열 수 있도록 하는 방법에 대한 자세한 설명은 PHP 중국어 웹사이트의 관련 기사를 참고하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿