쿼리 문자열 매개 변수 _s
은 주어진 요청에 사용할 세션을 찾는 데 사용됩니다. official documentation에서이 매개 변수는 세션 별칭 매개 변수이라고합니다.
source code for Spring Session을 살펴보면 세션 별칭 매개 변수를 추출하는 작업이 HttpSessionManager
인터페이스로 위임되었음을 알 수 있습니다. 현재 코드베이스에서이 인터페이스는 하나의 구현 - CookieHttpSessionStrategy
을가집니다. 이는 쿼리 문자열 (링크 된 소스 코드의 183 줄 참조)에서 매개 변수를 추출합니다.
따라서 현재 구현으로 HTTP 헤더에서 매개 변수 값을 추출 할 방법이 없습니다. 단, 사용 가능한 구현은 쿼리 문자열에서만 추출 할 수 있기 때문입니다.
그러나 헤더에서 매개 변수를 추출하는 getCurrentSessionAlias
메소드를 오버라이드 (override), CookieHttpSessionStrategy
를 서브 클래스와 같은 응용 프로그램에 대한 기본 세션 전략을 무시할 수 :
@Bean
public HttpSessionStrategy httpSessionStrategy() {
return new MyHttpSessionStrategy();
}
경우, MyHttpSessionStrategy
당신이 작성한 사용자 정의 전략 .
독자적 구현이 필요 없습니다. Spring Session은 이미 ['HeaderHttpSessionStrategy'] (http://docs.spring.io/spring-session/docs/current/api/org/springframework/session/web/)를 제공합니다. http/HeaderHttpSessionStrategy.html)을 즉시 사용할 수 있습니다. –
@Martin,'HeaderHttpSessionStrategy'는'getCurrentSessionAlias' 메소드를 노출하는'HttpSessionManager'를 구현하지 않습니다. 이것이 저의 대답입니다. – manish
@manish 유일한 문제는'CookieHttpSessionStrategy'가 마지막입니다! 나는이'final' 키워드가 왜 존재하는지 결코 이해하지 못했다 !!! – Mehran