[SPRING] Jetty의 Spring 애플리케이션에서 jsessionid 쿠키 경로를 서버 루트로 변경하는 방법은 무엇입니까?
SPRINGJetty의 Spring 애플리케이션에서 jsessionid 쿠키 경로를 서버 루트로 변경하는 방법은 무엇입니까?
나는 / app 컨텍스트에서 Spring 어플리케이션을 돌리는 Jetty 서버를 가지고있다. 앱은 세션을 사용하므로 세션 쿠키를 설정합니다. 세션 쿠키는 다음과 같이 응답합니다.
set-cookie:JSESSIONID=679b6291-d1cc-47be-bbf6-7ec75214f4e5; Path=/app; HttpOnly
webapp의 컨텍스트 대신에 /의 경로를 가지려면 쿠키가 필요합니다. 게다가 안전한 쿠키를 사용하고 싶습니다. 나는이 응답을 원한다.
set-cookie:JSESSIONID=679b6291-d1cc-47be-bbf6-7ec75214f4e5; Path=/; HttpOnly; Secure
세션 쿠키를 구성 할 적절한 위치는 어디입니까? 봄이 도움이됩니까? web.xml에 있어야합니까? 또는 jetty-web.xml과 같이 컨테이너 고유의 방식으로 구성해야합니까?
나는 많은 것을 시도했지만, 지금까지 아무 일도하지 않았다. 다음은 내가 시도한 몇 가지 사항입니다.
다음과 같이 WEB-INF / jetty-web.xml을 작성했습니다.
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Get name="sessionHandler">
<Get name="sessionManager">
<Set name="sessionCookie">MYJETTYSESSION</Set>
<Set name="sessionPath">/</Set>
<Set name="secureCookies" type="boolean">true</Set>
<Set name="httpOnly" type="boolean">true</Set>
</Get>
</Get>
</Configure>
이로 인해 예외가 throw됩니다.
2012-10-05 02:41:41.180:WARN:oejx.XmlConfiguration:Config error at <Set name="sessionPath">/</Set> java.lang.NoSuchMethodException: class org.eclipse.jetty.server.session.HashSessionManager.setSessionPath(class java.lang.String)
2012-10-05 02:41:41.180:WARN:oejx.XmlConfiguration:Config error at <Get name="sessionManager"><Set name="sessionCookie">MYJETTYSESSION</Set><Set name="sessionPath">/</Set><Set name="secureCookies">true</Set><Set name="httpOnly">true</Set></Get> java.lang.NoSuchMethodException: class org.eclipse.jetty.server.session.HashSessionManager.setSessionPath(class java.lang.String)
2012-10-05 02:41:41.180:WARN:oejx.XmlConfiguration:Config error at <Get name="sessionHandler"><Get name="sessionManager"><Set name="sessionCookie">MYJETTYSESSION</Set><Set name="sessionPath">/</Set><Set name="secureCookies">true</Set><Set name="httpOnly">true</Set></Get></Get> java.lang.NoSuchMethodException: class
전체 스택 추적이이 요지에 있습니다.
다음과 같이 WEB-INF / jetty-web.xml을 작성했습니다.
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Call name="setInitParameter">
<Arg>org.eclipse.jetty.servlet.SessionCookie</Arg>
<Arg>MYSESSIONID</Arg>
</Call>
<Call name="setInitParameter">
<Arg>org.eclipse.jetty.servlet.SessionIdPathParameterName</Arg>
<Arg>mysessionid</Arg>
</Call>
<Call name="setInitParameter">
<Arg>org.eclipse.jetty.servlet.SessionPath</Arg>
<Arg>/</Arg>
</Call>
</Configure>
이 예외는 발생하지 않지만 쿠키는 여전히 JSESSIONID이며 webapp 컨텍스트 경로 / app를 포함합니다.
WEB-INF / web.xml이 다음과 같이 업데이트되었습니다.
<context-param>
<param-name>org.eclipse.jetty.servlet.SessionPath</param-name>
<param-value>/</param-value>
</context-param>
<context-param>
<param-name>org.eclipse.jetty.servlet.SessionCookie</param-name>
<param-value>MYSESS</param-value>
</context-param>
이 예외는 발생하지 않지만 쿠키는 여전히 JSESSIONID이며 webapp 컨텍스트 경로 / app를 포함합니다.
WEB-INF / web.xml이 다음과 같이 업데이트되었습니다.
<session-config>
<session-timeout>720</session-timeout>
<cookie-config>
<name>SZSESSION</name>
<path>/</path>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>
이 예외는 발생하지 않지만 쿠키는 여전히 JSESSIONID이며 webapp 컨텍스트 경로 / app를 포함합니다.
Jetty Maven Plugin 버전 8.1.5.v20120716을 사용 중이며 mvn jetty :를 실행 중입니다.
<jetty.maven.plugin.version>8.1.5.v20120716</jetty.maven.plugin.version>
<spring.version>3.0.0.RELEASE</spring.version>
...
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.maven.plugin.version}</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<reload>manual</reload>
<stopPort>${jetty.stop.port}</stopPort>
<stopKey>foo</stopKey>
<webAppConfig>
<contextPath>/app</contextPath>
</webAppConfig>
</configuration>
...
</plugin>
해결법
-
==============================
1.시도 # 4는 바른 길이다.
시도 # 4는 바른 길이다.
이 권리를 읽고 있다면 컨텍스트 / 응용 프로그램의 maven 구성을 사용하고 있습니다. 즉, web.xml의 / your 설정은 구성중인 컨텍스트의 루트이므로 / app입니다.
다른 방법으로는 www.foo.com/에 대한 세션을 구성 할 수 없습니다. www.foo.com/app 컨텍스트에만 배포하는 경우 다른 사람이 해당 URL에 응용 프로그램을 배포하고 있다고 가정하면 결정할 수 없습니다 귀하의 세션 쿠키가 해당 URL로 운영되는 모든 사람에게 적용되도록하십시오.
from https://stackoverflow.com/questions/12755499/how-to-change-jsessionid-cookie-path-to-server-root-in-spring-app-on-jetty by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 보안에서 세션을 활성화하고 세션 시간 제한을 설정하는 방법 (0) | 2019.02.22 |
---|---|
[SPRING] 모든 SpringBeans와 ApplicationContext가 초기화 된 후에 메소드 호출하기 (0) | 2019.02.22 |
[SPRING] 스프링 부트를 만드는 방법은 세션 쿠키를 발행하지 않으십니까? (0) | 2019.02.22 |
[SPRING] ServletContext를 Autowire 할 수 없습니다. (0) | 2019.02.22 |
[SPRING] Maven을 사용하지 않고 Spring Framework jar를 어디에서 다운로드 할 수 있습니까? (0) | 2019.02.22 |