прокси-бины с областью весенней загрузки 1.5 не сохраняют значения - PullRequest
0 голосов
/ 08 сентября 2018

Я работал над приложением весенней загрузки 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'
...