programing

쿠키 JSESSIONID 이름 변경

copyandpastes 2021. 1. 19. 08:18
반응형

쿠키 JSESSIONID 이름 변경


단일 물리적 상자에서 여러 바람둥이 서버를 실행해야하는 요구 사항이 있습니다. 브라우저에서 액세스하는 동안 사용자가 애플리케이션간에 전환하면 이전에 애플리케이션에 액세스 한 사용자가 로그 아웃됩니다. 이는 JSESSIONID 쿠키 충돌 때문입니다.

한 가지 가능한 해결책은 각 응용 프로그램을 다른 컨텍스트에서 실행하는 것입니다. 불행히도 내 응용 프로그램은 앞에 request.getContextPath ()를 추가하여 리소스에 액세스하지 않으므로 컨텍스트 경로 설정에서 작동하지 않습니다.

이로 인해 충돌을 해결하기 위해 쿠키 JSESSIONID의 이름을 변경해야합니다. 이를 수행하는 방법이 있습니까? 그렇다면 어떻게?

내 질문을 명확하게 설명하기를 바랍니다.

참고 : 내 모든 애플리케이션이 동일한 컴퓨터의 다른 포트에서 실행되고 있습니다.


Servlet API 3.0을 사용하면 모든 것이 훨씬 간단 해집니다.

이제 web.xml에서 구성 할 수 있습니다.

<session-config>
    <cookie-config>
        <name>MY_JSESSIONID_YAHOOOOOO</name>
    </cookie-config>
</session-config>

그게 다야!


다음은 context.xml 파일의 Tomcat7에서 나를 위해 작동합니다.

<Context path="/yourApp" sessionCookieName="custom_session_id">

다음 두 가지 시스템 속성을 사용하면 쉽게 수행 할 수 있습니다.

  • org.apache.catalina.SESSION_COOKIE_NAME
  • org.apache.catalina.SESSION_PARAMETER_NAME

기본값을 변경하기 위해 모든 값을 위의 속성에 전달할 수 있습니다.

여기 에 몇 가지 샘플 스크립트가 포함 된 전체 세부 정보 가 있습니다.


Tomcat 7은이를 org.apache.catalina.SESSION_COOKIE_NAME에서 기본 <Context> 구성의 속성으로 이동합니다. http://tomcat.apache.org/migration-7.html#Session_manager_configuration


이 시점에서 가능하지 않다고 생각합니다 -https://issues.apache.org/bugzilla/show_bug.cgi?id=42419 참조

마지막 항목은 "이는 5.5.x에서 수정되었으며 5.5.28 이후에 포함될 것입니다"라고 표시되어 있습니다. 이는 다음 포인트 릴리스입니다. 5.5.27이 현재 릴리스입니다.


이것이 작동하는지 100 % 확신 할 수는 없지만 jvmRoute일반적으로로드 밸런서가 노드를 구분할 수 있도록로드 밸런싱 / 클러스터 환경에서 사용되는 속성을 사용할 수 있습니다. 예:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">

그러면 "ABCDEF123456.node1"과 같은 JSESSIONID 값이 생성됩니다.

문서 링크 .

참조 URL : https://stackoverflow.com/questions/877064/changing-cookie-jsessionid-name

반응형