Spring 3.1.1.Release, Security 3.1.0.Release를 사용하고 있습니다.보안 SessionFixationProtectionStatgy가 세션 범위 Bean을 방해합니다.
웹 응용 프로그램에 로그인/로그 아웃을 추가했지만 세션 범위가 설정된 콩이 작동하지 않습니다. bean은 CMSConnector라는 CMS에 연결하는 데 사용됩니다.
사용자를 인증하기 위해 AuthenticationProvider를 구현하고 authenticate() 호출에서 세션 범위 CMSConnector를 가져 와서 CMSConnector.login()을 호출했습니다. CMS 로그인에 실패하면 로그인에 실패합니다.
인한 문제 -
로그인 성공, @PreDestroy 로그 아웃()가 성공적으로 로그인 한 후 즉시 호출 인 경우. 그런 다음 SessionFixationProtectionStrategy가 이전 세션을 무효화하고 새 세션을 할당한다는 것을 알았습니다.
session.invalidate();
session = request.getSession(true); // we now have a new session
무효 인은() 세션 범위 빈에 @PreDestroy 메소드를 호출한다.
그래서 @predestroy 주석을 일시적으로 제거하여 연결이 닫히지 않도록했습니다. (매우 나쁜 실습)
문제를 해결하기위한 해결 방법은 무엇입니까?
@PostConstruct를 만들고 거기에 로그인 프로세스를 넣으려고했지만 request.getSession (true)이 호출 될 때 @PostConstruct가 호출되지 않습니다.
감사합니다.
제이슨
감사합니다. Ravi, 디버그 세션에서 내 preDestroy가 SessionFixationProtectionStrategy 프로세스에 의해 호출 중입니다. – Jason