JSESSIONID를 시작하는 것은 쿠키에 저장됩니다. 쿠키가 해제되어 있으면 URL에 jsessionid를 저장하도록 URL 다시 작성해야합니다. 쿠키에 세션에 대한 다른 정보는 없습니다. 다음 중 하나가 될 때까지 세션에 저장 아무것도 일이 발생하지 않습니다 :
- 인증을 컨테이너에
- request.getSession() 또는는 invalidate() 그렇게되면
라고 , 세션에 정보를 저장할 수 있습니다. request.getSession()을 호출하면 HttpSession을 반환합니다. HttpSession은 serializable을 구현합니다. 이 객체가 존재하면 요청이 끝나면이 객체가 직렬화됩니다. 모든 컨테이너는 HttpSession 직렬화 된 객체를 저장하는 방법에 대해 다양한 방법을 제공합니다. 기본적으로 대부분의 서버는이를 메모리에서 수행합니다. 대부분의 컨테이너는 HttpSession 객체를 직렬화 할 수있는 방법 (메모리, 디스크, 데이터베이스)을 선택할 수있는 선택 항목을 제공합니다. 대부분의 컨테이너는 또한 HttpSession을 직렬화하기위한 고유 한 방법을 사용자 정의하고 작성하는 방법을 제공합니다.
기본적으로 서블릿 스펙은 세션을 들여다보고 세션 ID 또는 이와 관련된 데이터 목록을 가져 오는 방법을 제공하지 않습니다. 엄청난 보안 위험이 있습니다.
세션 ID 및 관련 정보가 표시되도록하려면 코드를 작성해야합니다. 이것을하기위한 여러 가지 방법이 있습니다. 몇 가지 예는 다음과 같습니다
- 이 javax.servlet.http.HttpSessionListener을 구현하고 데이터베이스
- 에 JSESSIONID를 저장 javax.servlet.http.HttpSessionAttributeListener을 구현하고 세션 ID와 데이터베이스에서 키/값 쌍을 저장
위 인터페이스를 구현할 때 세션에 정보를 저장하지 않으면 인증에서 사용자 이름을 검색 할 수 없습니다. 원래의 war/ear 파일 동작에 영향을주지 않고 웹 애플리케이션에 두 개의 리스너를 추가 할 수 있습니다.
기본적으로 앱 서버를 사용하면 찾고있는 정보를 얻지 못하게되지만 약간의 코딩 만하면 쉽게 우회 할 수 있습니다.
Bishan : 질문을 게시하기 전에 이미 해당 게시물을 검토했습니다. 시간을내어 읽으면 세션이 저장되는 위치에 대한 정보가 없다는 것을 알 수 있습니다. – Peleus