gpt4 book ai didi

java - 访问 Pojo/Restful 服务中的 session 数据

转载 作者:行者123 更新时间:2023-12-01 12:41:10 25 4
gpt4 key购买 nike

我需要在一个非常大的现有系统中的每个日志语句中包含用户的 ID。用户的信息当前存储在 HttpSession 中,我可以轻松地从 sevlet 中的 HttpRequest 获取该信息。但我在所有其他被调用的 POJO 中也需要此信息。

我可以传递这些信息,但我不想这样做,因为我不想修改我们系统中每个方法的签名,因为这会花费太长时间并且需要太多测试。

此外,在调用 Restful 服务时我将需要用户的 ID。我可以轻松地在每个请求中传递该 ID,但这样做的工作量又是不可取的。

存储/接收此类“全局”信息的最佳实践是什么?我最好希望通过我们的身份验证逻辑一次性设置此信息,然后可以从 JVM 内的任何其他类(servlet、pojo、服务等)访问该信息,包括跨 Java 应用程序 (.war)。

这可能吗?

谢谢。

最佳答案

您可以将用户信息存储在ThreadLocal中。实现此目的的方法之一是创建一个 ServletFilter,它将用户信息保存到 ThreadLocal 并在请求处理完成时将其删除(非常重要!)。所有需要用户信息的方法都会从 ThreadLocal 变量中读取它。

要在每个 Restful 服务中传递用户 ID 而不更改所有代码,您需要某种拦截器。如果您使用 spring,那么实现 ClientHttpRequestInterceptor 将是最佳选择。

关于java - 访问 Pojo/Restful 服务中的 session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25084983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com