我面临一个问题,希望有人可以给我一些建议。我有一个宁静的Spring应用程序,它允许HTTP请求。我正在使用Spring Security并提供oauth2。在由控制器调用的基本服务中,我通过以下方式获取当前登录的用户:
SecurityUser loggedUser = (SecurityUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
到目前为止,一切正常。此外,我正在使用实现org.springframework.context.ApplicationListener接口的事件和事件侦听器。我配置了应用程序事件多播器,以异步方式处理事件(使用SimpleAsyncTaskExecutor)。
当我尝试在侦听器中使用我的服务(以及依赖于当前登录用户的方法)时,就会出现(显而易见的)问题。由于它们正在异步工作,因此它们无法访问上下文。因此,我无法获取当前用户。
您能提供任何解决问题的建议吗?还有更多选择吗?
非常感谢你。我
您可以使用DelegatingSecurityContextAsyncTaskExecutor而不是SimpleAsyncTaskExecutor。问题在于,只有在登录用户后才能获取用户的上下文。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句