Я работал над приложением весенней загрузки 1.5, оно работает на встроенном tomcat с включенным ssl. Он имеет сессионные прокси-бины, работающие нормально. Но когда я изменил tomcat с ssl на обычный http, bean-объекты области видимости не сохраняют значения. кто-нибудь имеет представление об этом?
Это что-то вроде этого
@Component("userSessionMap")
@Scope(value=WebApplicationContext.SCOPE_SESSION, proxyMode=ScopedProxyMode.TARGET_CLASS)
public class UserSessionMap extends HashMap<Object, Object> implements Serializable, HttpSessionBindingListener {
Spring security также используется в этом, похоже, что Spring Security вносит изменения в bean-объект области действия. После дальнейшего анализа я обнаружил, что если мы вместе используем bean-компоненты безопасности и сессионную область действия, то сессионный компонент не сохраняет свои значения.
Я проверил логи, когда мы запускаем приложение с SSL-сертификатом, Spring Spring сохраняет sessionId
.
o.s.s.w.a.AnonymousAuthenticationFilter : Populated SecurityContextHolder with anonymous token: 'org.springframework.security.authentication.AnonymousAuthenticationToken@905571d8: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@0: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: 46D13CFB4E2F394705C428FFEA9BEC74; Granted Authorities: ROLE_ANONYMOUS'
в то время как если мы используем обычный http, то идентификатор сессии не будет
o.s.s.w.a.AnonymousAuthenticationFilter : Populated SecurityContextHolder with anonymous token: 'org.springframework.security.authentication.AnonymousAuthenticationToken@9055c2bc: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null; Granted Authorities: ROLE_ANONYMOUS'