我需要配置 APEX 19.2(在 Tomcat 中工作)以允许用户同时仅在一个会话上工作,并且只能在一个选项卡中工作(在 Google Chrome 和 Edge 中)。
现在,当我在 Chrome 上工作时,我可以打开 Edge 并创建新会话,并在两者上工作。
使用带有“为所有会话启用”值的重新加入会话属性不适用于 2 个浏览器。
我需要配置 APEX 19.2(在 Tomcat 中工作)以允许用户同时仅在一个会话上工作,并且只能在一个选项卡中工作(在 Google Chrome 和 Edge 中)。
现在,当我在 Chrome 上工作时,我可以打开 Edge 并创建新会话,并在两者上工作。
使用带有“为所有会话启用”值的重新加入会话属性不适用于 2 个浏览器。
我也很好奇你为什么要这样做。请记住,您实施的解决方案将影响用户体验。
这是基于 Koen 上述评论的一种解决方案:https ://stackoverflow.com/revisions/58672526/1
这实际上是我给想要实现它的人的第一个解决方案。但是,我后来得知他们使用的是旧版本的 APEX,因此我将答案更新为需要自定义表格的答案。如果您愿意,您也可以查看该版本。
该解决方案的优点是您很容易实施。然而,对于最终用户来说更糟糕的是,他们可能会在上一个会话中丢失一些工作,例如,如果他们返回到它并提交一个包含数据的表单页面,但它只是将他们带到登录页面而不是保存他们的工作。
一个更难实现但对您的用户可能更好的解决方案是使用您在自定义表中记录的基于 Ajax 的 ping。这可以告诉您哪个会话是用户的“活动会话”。如果您在 N 秒后还没有看到 ping,您可能会认为它已经过时并允许新的登录来杀死它。
更进一步,您可以有逻辑表示如果活动会话在 x 和 y 秒之间过时,则提示用户他们是否要终止前一个会话。
正如你所看到的,你为用户做的越多,你自己付出的努力就越多。