【问题标题】:Accessing Session Data in Pojo/Restful Service在 Pojo/Restful 服务中访问 Session 数据
【发布时间】:2014-08-02 00:54:32
【问题描述】:

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

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

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

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

这可能吗?

谢谢。

【问题讨论】:

    标签: java rest session global


    【解决方案1】:

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

    要在不更改所有代码的情况下通过每个 Restful 服务传递用户 ID,您需要某种拦截器。如果您使用的是 spring,那么实现 ClientHttpRequestInterceptor 将是可行的方法。

    【讨论】:

    • 谢谢。我会试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2011-12-13
    • 2018-06-13
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多