У меня есть объект Счет:Spring Security: запомнить и данные сеанса
public class Account {
String name;
List<Car> cars;
}
Я заселить машины во время входа в систему (в пользовательской проверки подлинности), а затем сохранить учетную запись на сессии. Затем я закрываю браузер. Когда я его снова открою, объект Account жив, но автомобили имеют значение null. Каков правильный способ сохранения свойств объекта в том же сеансе?
Вот отрывок из моей ApplicationContext-security.xml:
<http use-expressions="true"
authentication-manager-ref="authenticationManager"
auto-config="true"
create-session="ifRequired">
<intercept-url pattern="/my/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>
<intercept-url pattern="/service/**" access="hasRole('ROLE_ADMIN')"/>
<form-login
login-page="/login"
authentication-failure-handler-ref="simpleUrlAuthenticationFailureHandler"
username-parameter="j_username"
password-parameter="j_password"
default-target-url="/home"
always-use-default-target="false"/>
<logout logout-success-url="/logout" invalidate-session="true" delete-cookies="JSESSIONID"/>
<http-basic />
<remember-me key="uniqueAndSecret"
token-validity-seconds="1209600"
remember-me-cookie="edrive"
remember-me-parameter="_spring_security_remember_me"
user-service-ref="localUserService"/>
</http>
и как я сохраняю счет:
Account account = accountDao.getAccount(name, password);
HttpSession session = httpUtilities.getSession(); // session from the HttpServletRequest
account.setCars(domainUtilities.getAccountCars(account.getId()));
session.setAttribute("account", account);
Spring Security 4.1.3.RELEASE
UPDATE 1: мои исследования показывают, что при первом входе в аккаунт объект учетной записи сохраняется в сеансе:
account [email protected]
и сессия также содержит:
[email protected]
SPRING_SECURITY_CONTEXT [email protected]e3a7b0: Authentication: org.springframew[email protected]a2e3a7b0: Principal: [email protected]: Username: someuser; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USER; Credentials: [PROTECTED]; Authenticated: true; Details: org.sprin[email protected]ffff4c9c: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: 0B7153F813D8F0B943C34EF19A7271C8; Granted Authorities: ROLE_USER
В следующий раз, когда я начинаю браузер, Tomcat 8 открывает новую сессию только:
org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository.CSRF_TOKEN [email protected]
SPRING_SECURITY_CONTEXT [email protected]1c5848: Authentication: org.spring[email protected]5d1c5848: Principal: [email protected]: Username: someuser; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USER; Credentials: [PROTECTED]; Authenticated: true; Details: org.sprin[email protected]b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null; Granted Authorities: ROLE_USER
И - SessionId равна нулю. Зачем? Это причина, по которой этот аккаунт недоступен во второй раз?