我想将其他用户信息存储在 cookie 中,例如带有用户名和密码的 userId。当我使用弹簧安全记住我功能时,我可以从 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 中?