> 백엔드 개발 > 파이썬 튜토리얼 > 동일한 브라우저에서 열리도록 동일한 서버의 다른 포트를 사용하는 Django 애플리케이션을 활성화하는 방법에 대한 자세한 설명

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

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

동일한 서버의 서로 다른 포트에서 두 개의 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으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿