【问题标题】:Logout a user from all devices if user hit logout from one device in java如果用户从java中的一个设备注销,则从所有设备注销用户
【发布时间】:2014-07-30 20:04:55
【问题描述】:

我正在开发一个 java 应用程序,在此我的要求是 - 用户可以从不同的设备登录,但如果他在一个设备上注销,那么用户的 id 将自动从其他设备注销。我通过 servlet 和会话执行此操作但无法解决。

谢谢。

【问题讨论】:

  • 维护单个会话?如果我是开发人员,我会在容器上维护特定用户的会话列表。
  • 是否可以在不同的设备上保持单个会话。如果是,那么如何?
  • 没有。这很奇怪,你不能。请看我评论中的第二部分。
  • 所以.. 告诉我它会如何通过不同的会话发生?正如我在用户登录应用程序时看到的那样,然后为每个用户创建一个新会话。

标签: java


【解决方案1】:

假设您有 3 台设备:

1. Desktop
2. Mobile
3. iPad

您的应用程序有一个监听器,它不断查看数据库中的表。

当用户从任一设备注销时,您将在数据库中设置状态为 LOGOUT。其他设备监听器会自动知道并执行相应设备的注销代码。

示例设计:


对于实时,从任何一台设备注销时推送 JMS 消息,并保持其他设备订阅该主题。

【讨论】:

  • Google 确实提供了“从所有设备注销”功能! :)
【解决方案2】:

维护已打开会话的用户记录(例如通过 DDBB 中的标志,在用户表中),并在用户执行任何操作时检查该标志...

当用户在任何设备上登录应用程序时,将该标志设置为 true,如果他关闭任何设备中的会话,则将该标志设置为 false,并在他尝试在另一个打开的会话中执行任何其他操作时返回登录错误(至在任何其他设备中)...

这是一个非常简单的解决方案,它只为每个请求添加一个新的(简单的)查询,所以我认为这还不错......

【讨论】:

    猜你喜欢
    • 2015-09-01
    • 2022-10-09
    • 2022-07-20
    • 2016-09-24
    • 1970-01-01
    • 2014-06-21
    • 2022-11-10
    • 2020-05-10
    • 1970-01-01
    相关资源
    最近更新 更多