Spring会话:立即更新redis中登录的用户对象
我有两个web应用程序(A和B)。 第一个web应用程序(A)使用SpringCloud作为反向代理。 我使用spring会话将两个应用程序的会话存储在redis数据库中 问题Spring会话:立即更新redis中登录的用户对象,spring,spring-security,spring-session,Spring,Spring Security,Spring Session,我有两个web应用程序(A和B)。 第一个web应用程序(A)使用SpringCloud作为反向代理。 我使用spring会话将两个应用程序的会话存储在redis数据库中 问题 当我修改当前(登录)用户的字段(例如名称)时,当前登录用户对象不会立即更新,因此,当我试图在下一次调用中检索当前登录用户时(通过@AuthenticationPrincipal),我会得到一个未更新的用户对象 我的自定义用户详细信息对象: public class CustomUserDetails extends my
当我修改当前(登录)用户的字段(例如名称)时,当前登录用户对象不会立即更新,因此,当我试图在下一次调用中检索当前登录用户时(通过@AuthenticationPrincipal),我会得到一个未更新的用户对象 我的自定义用户详细信息对象:
public class CustomUserDetails extends my.package.User implements org.springframework.security.core.userdetails.UserDetails, java.io.Serializable {
// ...
}
如何立即更新当前用户对象?最近我遇到了类似的问题,我通过以下方式解决了它: 1.创建了自定义身份验证类
public class MyCustomAuthentication implements Authentication {
private UserDetails userDetails;
public MyCustomAuthentication(UserDetails userDetails) {
this.userDetails = userDetails;
}
...
@Override
public Object getDetails() { return userDetails; }
@Override
public Object getPrincipal() { return userDetails; }
@Override
public boolean isAuthenticated() { return true; }
...
}
SecurityContextHolder.getContext().setAuthentication(new MyCustomAuthentication(userDetails));