【问题标题】:Get all sessionScope variables in XPages获取 XPages 中的所有 sessionScope 变量
【发布时间】:2012-03-16 22:23:05
【问题描述】:

假设用户 A 登录并设置了 sessionScope 变量(这只是一个示例):

sessionScope.put("ABC", "ABC");

现在用户 B 登录并设置了他的 sessionScope 变量:

sessionScope.put("XYZ", "XYZ");

有没有一种方法可以让我获得属于不同用户的所有这些 sessionnScope 变量/对象?

【问题讨论】:

    标签: xpages


    【解决方案1】:

    理论上,您可以注册一个 sessionListener,它在 applicationScope 中存储一个指向创建的每个 sessionScope 的指针......但是,在我看来,这是一个非常糟糕的主意。您必须非常小心,避免将用户的会话数据暴露给彼此。

    【讨论】:

    • 如何添加 sessionListener 而不能修改 web.xml?
    • 在 faces-config.xml 中注册。 XSP Starter Kit 包含一个参考实现:openntf.org/internal/home.nsf/…
    • 如何将这个添加到 faces-config.xml 中? - 语句会被忽略吗?
    • 您看过 XSP Starter Kit 中的参考实现了吗?
    • 我查看了 XSP Starter Kit。但据我了解,这似乎更复杂。不仅仅是在 faces-config.xml 中添加一个条目。不过谢谢你的提示!
    【解决方案2】:

    【讨论】:

    • 您可以做的是使用 Thomas 所述的调试栏。另一种方法是将会话范围变量的设置/获取记录在文件/数据库中。但首先要做的事。
    【解决方案3】:

    会话范围属于单个用户,因此您无法开箱即用地检索它们。您可以将日志记录添加到 xpage/business 日志中,以便跟踪正在发生的事情。另一种方法是以您现在想要查看范围的用户身份登录并使用调试栏进行调查

    【讨论】:

      【解决方案4】:

      SessionScope 变量属于浏览器/客户端的单个实例。如果您是匿名用户并以“用户一”身份登录,您将拥有与以前相同的 sessionScope。如果您注销并以“使用两个”身份重新登录,情况也是如此。

      我已经构建了一个应用程序,它在每个页面的页面加载之前运行一个方法,以确保设置必要的 sessionScope 数据。该数据的一部分是为其定义数据的用户的名称。这样,如果用户名发生更改,我们会清除数据并为当前用户重新加载。

      使用这种方法,您可以定义一个以用户名作为键的 MAP 或 JSON 对象,这将在人们登录和退出时保持差异,但我不确定这是一个非常明智的做法,因为更改身份只是现实的开发和测试。这在生产中是不正常的。

      /新人

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多