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