强制所有会话注销

时间:2010-03-17 08:06:31

标签: java tomcat servlets tapestry

我正在使用spring + tapestry来验证webuser。我想知道是否有任何技术可以强制当前登录的所有用户退出让我说我正处于网站“处于维护模式”的情况

p / s:它是否能够强制所有用户的运行过程完成并且只强制注销

2 个答案:

答案 0 :(得分:4)

我想到了两件事:

  • 使用HttpSessionListener跟踪所有会话,并在时机成熟时使其无效。要使用此功能,您需要在Set中使用SessionServletContext个对象(或者更不优选 - 作为静态字段)。每当创建或销毁会话时更新Set,并在需要失效时迭代该集。

  • 使用Filter(映射到/*),如果满足某些条件(maintenance == true),则会使当前会话无效。因此,所有用户都将在下一步操作中注销。这适用于“维护模式”并不意味着“停止整个服务器”的情况,而是意味着“用户不应执行任何操作,我在后台做一些不应受到干扰的重要事项”

答案 1 :(得分:1)

问题是试图让他们完成请求,然后才将其注销。我假设如果他们在表单上点击保存,您希望保存数据但是应该将它们重定向到维护页面。对于GET请求,如果设置了维护标志,则只需将用户注销。 POST更加难以理解,因为您想要完成请求,然后将其签名并将其重定向到维护页面。我会尝试请求过滤器。正常处理请求,但是如果设置了维护标志,则会使会话无效并使用response.sendRedirect。

另一种选择是在布局中使用JavaScript计时器 - 定期点击页面以查看是否应该注销。这可能不会让他们完成当前的请求。