使Java HTTP会话无效以重定向到其他服务器,而无需将用户注销

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使Java HTTP会话无效以重定向到其他服务器,而无需将用户注销相关的知识,希望对你有一定的参考价值。

我正在尝试以下流程:

  1. 使HttpSession无效
  2. 负载均衡器将用户重定向到服务器
  3. 用户应该已经登录,无论他们被发送到哪个服务器。

笔记:

粘滞会话已启用,但会话无效时无关紧要。现有规则在一定时间后注销用户,但我需要能够确保在调用使会话无效的某个方法时用户保持登录状态。

服务器不是群集的,因此没有服务器知道其他服务器。在当前环境中也无法实现Redis或类似功能。

服务器是JBoss 7(EAP 6.1)

我被困在逻辑流程中,除了使用httpSession.invalidate()无效之外,我似乎无法找到已经完成此操作的人

答案

但我需要能够确保用户保持登录状态 - 那么为什么会有这些会话超时规则?哪个更重要:安全性还是用户体验?

更安全的方法,最容易实现:前端使用计时器在会话到期前几分钟提醒用户不活动。如果用户忽略了警报,那就太糟糕了。用户必须重新登录。

安全性较低且难以实现,但具有更好的用户体验:当用户登录时,将令牌存储在与用户关联的共享存储中。每个请求都包含令牌作为标头或发布值,但从不作为查询参数,因此如果会话过期,可以查找令牌以获取受信任的用户,并在没有密码的情况下将用户重新登录。当然,任何会话上下文仍然会丢失,因为会话已经过期,因此根据用户的行为,这可能会导致用户混淆。

但令牌被认为有效期多久?假设会话超时为15分钟(这是某些应用程序的监管要求),令牌可以信任多长时间? 30分钟,1小时,24小时?这是一个滑坡。 同样,哪个更重要:安全性还是用户体验?

以上是关于使Java HTTP会话无效以重定向到其他服务器,而无需将用户注销的主要内容,如果未能解决你的问题,请参考以下文章

使用 django python-social-auth 重定向后会话值丢失

单击按钮以重定向到父 URL

由于不活动而导致会话超时[重复]

Spring Security - 公共页面重定向到使用无效会话 ID 登录

用户注销时会话无效(Spring)

如何更改我的注销路线以重定向到我的主页