Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储来自不同用户的Java HttpSession并使其无效_Java_Session_Jetty_Invalidation_Httpsession - Fatal编程技术网

存储来自不同用户的Java HttpSession并使其无效

存储来自不同用户的Java HttpSession并使其无效,java,session,jetty,invalidation,httpsession,Java,Session,Jetty,Invalidation,Httpsession,好的。我想做的是,当我更新用户时,能够使他们当前拥有的任何会话无效,以便强制刷新凭据。我不在乎能否直接访问特定于会话的用户数据。理想情况下,我还可以通过类似的方式将用户限制为一个会话 我尝试的是使用用户名作为键,HttpSession作为值创建一个HashMap(我的实际设置稍微复杂一些,但在多次看似无法解释的失败之后,我将其归结为这个简单的测试)。但是,每当我试图告诉检索到的HttpSession使其无效时,它似乎使当前[admin]会话无效。HttpSession是否不可避免地绑定到当前请求

好的。我想做的是,当我更新用户时,能够使他们当前拥有的任何会话无效,以便强制刷新凭据。我不在乎能否直接访问特定于会话的用户数据。理想情况下,我还可以通过类似的方式将用户限制为一个会话

我尝试的是使用用户名作为键,HttpSession作为值创建一个HashMap(我的实际设置稍微复杂一些,但在多次看似无法解释的失败之后,我将其归结为这个简单的测试)。但是,每当我试图告诉检索到的HttpSession使其无效时,它似乎使当前[admin]会话无效。HttpSession是否不可避免地绑定到当前请求

还是有一种完全不同的处理方式


如果碰巧有问题,我使用的是Jetty 6.1.26。

没有直截了当的方法。我能想到的最简单的方法是在数据库(或cahche)上保留一个标志,并在每个请求上检查它的有效性

或者,您可以实现HTTP会话侦听器,并保留可访问和无效的用户会话的哈希映射


我还没有尝试过这些,所以我不知道有任何性能问题。但对于大多数应用来说,它应该是可以接受的。

没有直接的方法。我能想到的最简单的方法是在数据库(或cahche)上保留一个标志,并在每个请求上检查它的有效性

或者,您可以实现HTTP会话侦听器,并保留可访问和无效的用户会话的哈希映射


我还没有尝试过这些,所以我不知道有任何性能问题。但对于大多数应用程序来说,它应该是可以接受的。

好吧,据我所知,这是没有办法的。使用请求范围的bean并没有像我预期的那样工作(尽管它确实让我很好地了解了Spring是如何运行的,拦截字段访问)。最后,我在SessionHandler(会话作用域bean)上使用了一个脏标志,并进行了高优先级的方面检查,如有必要,在用户的下一个请求中对会话调用invalidate()。我仍然让我所有的SessionHandlers注册到SessionManager,并使用@PreDestroy方法注销它们,以避免映射中出现大量空条目。

好吧,据我所知,这是没有办法的。使用请求范围的bean并没有像我预期的那样工作(尽管它确实让我很好地了解了Spring是如何运行的,拦截字段访问)。最后,我在SessionHandler(会话作用域bean)上使用了一个脏标志,并进行了高优先级的方面检查,如有必要,在用户的下一个请求中对会话调用invalidate()。我仍然让我所有的SessionHandlers注册到SessionManager,并使用@PreDestroy方法注销它们,以避免映射中出现大量空条目。

这几乎就是我的设置(会话侦听器)。问题是在调用session.invalidate()时,它使我从中失效的会话失效,而不是目标会话。我的想法是在会话范围的bean中设置一个无效标志,然后使用一个方面来验证和失效。或者我想我可以从请求范围的bean进行验证。无论哪种方式,它都会把我带到同一个地方(取决于方面还是实例化是先发生的)。当您在该映射的其他用户的会话上调用invalidate时,您是唯一一个无效的?也许你的会话在地图上,它也无效了……是的。目标会话未受影响。这几乎正是我的设置(会话侦听器)。问题是在调用session.invalidate()时,它使我从中失效的会话失效,而不是目标会话。我的想法是在会话范围的bean中设置一个无效标志,然后使用一个方面来验证和失效。或者我想我可以从请求范围的bean进行验证。无论哪种方式,它都会把我带到同一个地方(取决于方面还是实例化是先发生的)。当您在该映射的其他用户的会话上调用invalidate时,您是唯一一个无效的?也许你的会话在地图上,它也无效了……是的。目标会话未受影响。