ユーザー名とパスワードを含むuserIdなどのCookieに他のユーザー情報を保存したい。spring securityのremember me機能を使用すると、Cookieからユーザー名を取得できます。
spring-security.xml では、カスタムの userDetailService を使用しており、次のように実装しました
<http>
......
<logout invalidate-session="true"
logout-success-url="/"
logout-url="/logout.htm"/>
<remember-me user-service-ref="myUserDetailsService" key="89dqj219dn910lsAc12" token-validity-seconds="864000"/>
</http>
<authentication-manager>
<authentication-provider user-service-ref="myUserDetailsService">
<password-encoder ref="myEnocdePassword" >
<salt-source user-property="username"/>
</password-encoder>
</authentication-provider>
</authentication-manager>
<beans:bean id="myEnocdePassword" class="com.mycom.myproject.utility.MyEnocdePassword" />
MyUserDetailService.java には次のようなコードがあります
@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException, DataAccessException {
try {
boolean enabled = true;
boolean accountNonExpired = true;
boolean credentialsNonExpired = true;
boolean accountNonLocked = true;
com.mycom.myproject.db.mybatis.model.User domainUser = userService.getUserByName(username);
return new User(
domainUser.getUsername(),
domainUser.getPassword(),
enabled,
accountNonExpired,
credentialsNonExpired,
accountNonLocked,
getAuthorities(domainUser.getRoleId);
} catch (Exception e) {
throw new RuntimeException(e);
}
私のコントローラークラスでは、次を使用してユーザー名を取得できます
String name = SecurityContextHolder.getContext().getAuthentication()
.getName();
しかし、userId などの Cookie に他のユーザーの詳細を保存したいと考えています。どうすればそれができますか?userDao(name) でユーザー情報を取得し、手動でユーザー情報を Cookie に保存する必要がありますか?