0
我正在使用spring引导创建无状态的REST API。 因此,我正在使用基于令牌的身份验证。Spring Security从无状态服务器注销
当前注销功能只在客户端实现。 我只是清除所有的饼干。
问题是用户对象似乎在请求中生存下来,所以它仍然存在于下一个请求中。 我的服务来获得当前用户很简单:
@Service
public class UserService {
private User user;
@Autowired
private UserRepository;
public User get() {
if (user != null) {
return user;
}
Integer id = (Integer) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
user = userRepository.findById(id);
return user;
}
}
我希望用户变量为空每个请求?有趣的是,在安全上下文中设置了正确的用户标识。但是服务返回用户对象,因为它已经存在。
但即使服务是一个单身人士,我期望单身人士的生命期只是请求约束。春天似乎在缓存单身人士的服务?否则我无法想象下一个请求中用户属性的存在方式。 – user3481997
默认情况下,如果仅指定注释** Service **,则每次只能有一个UserService类(该类只有一个实例)。您可以通过注释** Scope **指定bean的范围,但我不推荐此解决方案。 – desoss
但是这是通过多个请求共享的一个实例吗? – user3481997