我正在开发SpringBoot有状态应用程序。出于管理的目的,我需要能够访问任何用户会话并修改那里的属性。
现在,我知道了如何成功访问当前(我的)用户Authentication
对象:
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
OAuth2User principal = (OAuth2User) authentication.getPrincipal();
但是如何对其他用户执行相同的操作呢?
有没有可能通过用户名或类似的东西找到会话?我真的很感激这个例子。
1条答案
按热度按时间f0brbegy1#
没有内置的机制来完成您想要的事情,但是您可以编写一个自定义的
HttpSessionListener
,它将保存对活动会话的引用,在过期时删除它们,并且还公开一些方法来操作会话属性。因此也需要注册一个AuthenticationSuccessHandler
来完成此操作。登录用户的管理器如下所示:
您的成功处理程序将如下所示
您可以在spring安全配置中注册success处理程序,例如
请记住,在用户仍在使用您的服务时操作会话数据实际上不是一个好主意,因此除非绝对需要,否则我不建议您这样做。