Vaadin 在另一个浏览器/选项卡/系统中关闭同一用户的 UI

2024-03-16

我正在 Vaadin 7 中做一个项目。我需要实现如下所示的登录功能。

用户“A”登录到系统“1”。他再次登录到另一个系统“2”。现在我想知道如何关闭系统“1”上的用户界面。

我尝试了一些方法,如果是同一个浏览器,可以关闭用户界面。但是,对于不同的系统/浏览器。我不知道。

My Code:

private void closeUI(String attribute) {
        for (UI ui : getSession().getUIs()) {
            if(ui.getSession().getAttribute(attribute) != null)
                   if(ui.getSession().getAttribute(attribute).equals(attribute))
                         ui.close();

            }
}

有人能帮我吗?


我的情况与您类似,我需要显示有关所有会话的一些信息。我所做的是创建自己的 Servlet,使用静态 ConcurrentHashmap 来扩展 VaadinServlet 来保存我的会话信息,并使用 SessionDestroyListener 来在注销时从地图中删除任何信息。最初,我还有一个 SessionInitListener,我在哈希图中添加了信息,但我意识到我只有身份验证后的用户信息,所以我将这部分移动到处理登录的页面。

我想你可以做类似的事情,或者至少这应该让你开始:

public class SessionInfoServlet extends VaadinServlet {

  private static final ConcurrentHashMap<User, VaadinSession> userSessionInfo = new ConcurrentHashMap<>();

  // this could be called after login to save the session info
  public static void saveUserSessionInfo(User user, VaadinSession session) {
    VaadinSession oldSession = userSessionInfo.get(user);
    if(oldSession != null){
      // close the old session
      oldSession.close();
    }
    userSessionInfo.put(user, session);
  }

  public static Map<User, VaadinSession> getUserSessionInfos() {
    // access the cache if we need to, otherwise useless and removable
    return userSessionInfo;
  }

  @Override
  protected void servletInitialized() throws ServletException {
    super.servletInitialized();
    // register our session destroy listener
    SessionLifecycleListener sessionLifecycleListener = new SessionLifecycleListener();
    getService().addSessionDestroyListener(sessionLifecycleListener);
  }

  private class SessionLifecycleListener implements SessionDestroyListener {
    @Override
    public void sessionDestroy(SessionDestroyEvent event) {
      // remove saved session from cache, for the user that was stored in it
      userSessionInfo.remove(event.getSession().getAttribute("user"));
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vaadin 在另一个浏览器/选项卡/系统中关闭同一用户的 UI 的相关文章

  • Struts 2 中的 Java 应用程序可以管理多少个会话?

    我正在开发事务管理应用程序 并且正在使用 Struts2 我在内部使用了一个会话来设置和获取值 例如 ActionContext getContext getSession put string string 在应用程序中使用这样的会话是否
  • 拥有两张单独的用户表还是一张更好?

    我的网络应用程序将拥有两种 100 不同的用户 领域 功能和网站目的 一类用户的目的是发布博客 另一类用户的目的是阅读博客并 关注 发布者 他们唯一的共同点是需要 ID 电子邮件 密码和其他一些元数据 例如加入日期等 我应该尝试将它们从同一
  • Asp net Core 获取用户Windows用户名

    在ASP net CORE mvc中构建内联网 我需要获取当前用户的Windows用户名进行登录 我不需要使用Windows身份验证自动登录用户 我已经有一个自定义登录控制器来做到这一点 我只需要他的用户名 它在本地工作正常 但在 IIS
  • 优雅地终止 WCF 服务 - 完成所有打开的会话并限制新会话

    我有一个我编写的 WCF 服务 它托管在 Windows 服务中 它以 PerSession 模式运行 该服务允许客户端通过该服务远程打开文件 更改文件以及关闭文件 到目前为止一切工作都非常顺利 当 Windows 服务停止时 我希望能够让
  • 客户端凭据授予的访问令牌是否可以映射到用户?

    我想使用 oauth2 中的客户端凭据授予来保护 API 但是 我希望访问令牌映射到单个用户 由我在带外信任 设置阶段选择 在该阶段我共享密钥 秘密 这是一个问题吗 我知道使用客户端凭据授予的访问令牌不应该在用户的上下文中 以这种方式绑定它
  • 如何在 MVC 5 中设置自定义 ClaimsPrincipal?

    我创建了一个自定义主体类 public class FacebookPrincipal ClaimsPrincipal public JObject Data get set 我想用它 当用户登录时 我尝试设置 var fbP new Fa
  • Golang 网络爬虫 NTLM 身份验证

    Golang 网络抓取工具需要从经过 NTLM 验证的网页中提取信息 有了有效的用户名和密码 网络抓取工具如何与服务器进行 NTLM 4 次握手 以获得对后面受保护网页的访问权限 url username password http www
  • 使用 CDI+JSF 使会话失效不起作用

    我正在尝试在我的应用程序中实现注销 所以我这样做了 public String logout try FacesContext facesContext FacesContext getCurrentInstance ExternalCon
  • 使用自己的 Web 应用程序 API - 使用 OAuth2 进行身份验证过程

    Overview 我目前正在为图像共享应用程序创建 API 该应用程序将在网络上运行 将来在移动设备上运行 我了解 API 构建的逻辑部分 但我仍然在努力满足我自己对身份验证部分的要求 因此 我的 API 必须可供全世界访问 具有访客访问权
  • 使用 laravel 检查活动用户状态

    这是非常标准的登录功能和验证 效果很好 但我还想检查用户是否处于活动状态 我在用户表中设置了一列 并将 活动 设置为 0 或 1 public function post login input Input all rules array
  • 如何验证最终用户经过身份验证的令牌(使用 Firebase 身份验证)来调用 google cloud run 端点?

    请帮助使用 firebase 身份验证在云运行中进行最终用户身份验证 简短的介绍 我从 firebase 函数提交 Authorization Bearer idToken 标头 并使用电子邮件 密码 firebase 用户进行身份验证的
  • 会话过期后如何重定向到登录页面?

    我有三个 JSF 2 0 Web 模块 当会话过期时我需要重定向到登录页面 我已经尝试过使用HttpSessionListener 它正在调用sessionDestroyed 事件方法 但我无法在那里转发 重定向请求 我认为这是因为没有Ht
  • 如何使用 keycloak 强制每个客户端登录(最佳实践?)

    我们目前正在实施 keycloak 但我们面临着一个问题 我们不确定解决它的最佳方法是什么 我们有不同的网络应用程序使用单点登录 并且运行良好 我们遇到的问题是 当我们在一个 Web 应用程序中使用 sso 登录 然后在另一个 Web 应用
  • 使用 Wordpress 验证 Flask API

    我有两个网站 一个托管大部分内容的 WordPress 博客 我还用 Flask 编写了一个 API 我想在 Wordpress 受密码保护的页面 中使用 API 但我需要在 Flask 响应之前验证请求是否经过身份验证 当我收到对 Fla
  • 如何在 C# 中将 cookie 过期设置为“会话”?

    不言自明 在 PHP 中 解决方案是将 cookie 过期设置为 0 我不确定 C 因为它需要 DateTime 值 的文档Cookie 过期 http msdn microsoft com en us library system net
  • 会话亲和性和粘性会话之间的区别?

    有什么区别会话关联性 and 粘性会话在负载平衡服务器的上下文中 我见过这些术语可以互换使用 但有不同的实现方式 在第一个响应中发送 cookie 然后在后续响应中查找它 cookie 表明要发送到哪个真实服务器 Bad如果您必须支持无 c
  • django 中的身份验证方法返回 None

    你好 我在 django 中做了一个简单的注册和登录页面 当想要登录时 登录视图中的身份验证方法不返回任何内容 我的身份验证应用程序 模型 py from django db import models from django contri
  • ASP.NET Core 会话超时

    我记得我们在 ASP NET 中使用了 session timeout 来更改会话超时 如果不更改 则为 20 分钟 我尝试在 Startup cs 中更改 ASP NET Core 3 1 中的会话超时 但没有任何反应 我对操作员使用身份
  • AADSTS50011:请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配:'*****-*****-*****-*****-**** ******'

    我正在尝试使用 Django Microsoft 身份验证后端 允许 o365 登录我的 Django 项目 https django microsoft auth readthedocs io en latest https django
  • 当用户再次访问同一页面时保持登录状态?

    目前我正在使用会话来登录用户 但是当我关闭浏览器并再次打开它时 我必须再次登录 你如何让用户在 2 周内保持登录状态 那么是通过cookie吗 那么您想要 在这台计算机上记住我 选项吗 这是一种与语言无关的方法 创建一个至少包含以下内容的数

随机推荐

  • 在 Java 中动态加载模块(类)的最佳方法

    我目前正在编写一个需要在不同类型的设备上运行的应用程序 我的方法是制作一个 模块化 应用程序 可以根据需要操作的设备动态加载不同的类 为了使应用程序易于扩展 我的目标是为附加模块 jar 或 class 文件 分配特定路径 而核心程序保持原
  • 如何获取和设置当前网页滚动位置?

    如何获取和设置当前网页滚动位置 我有一个很长的表单 需要根据用户操作 输入进行刷新 发生这种情况时 页面会重置到最顶部 这对用户来说很烦人 因为他们必须向下滚动回到原来的位置 如果我可以在页面重新加载之前捕获当前滚动位置 在隐藏输入中 那么
  • 如何列出包中的所有类和方法/函数 - 具有完整的文件夹/文件路径?

    为了更好地理解包的结构 假设我们有一些包 模块 比如说 somemodule 结构如下 somemodule file1 py fo x a function file2 py bar x a function dir1 file3 py
  • 在 Rails 应用程序中实现投票的最佳方式?

    目前在 Rails 站点上实现投票的最佳插件是什么 我知道的两个是 vote fu http github com peteonrails vote fu 行为可投票 http github com ryanto acts as votab
  • JPA CriteriaBuilder 案例查询

    任何人都可以提供如何使用编写案例查询的示例CriteriaBuilder 以下是使用的示例案例表达式CriteriaBuilder 这适用于 JPA 2 Hashtable caseTable new Hashtable 3 caseTab
  • Jquery视差滚动效果-多方向

    我需要为客户构建一个多方向 JQuery 视差页面 他们基本上希望它以与此类似的方式工作 https victoriabeckham landrover com INT https victoriabeckham landrover com
  • 从 shell 脚本获取 pytest 退出代码

    我正在从 shell 脚本运行 pytest 测试 脚本中的相关行类似于 pytest pytest tests param my param 根据 pytest 文档 运行 pytest 可能会导致六种不同的退出代码 0 5 我的问题是如
  • PHP 数组插入无法按预期工作

    我正在尝试插入一些项目 假设nitems 它们都彼此不同 到一个数组 不知何故 最终的数组包括n items 它们都是相同的项目 最后插入的项目 这是我的代码 searchResults data foreach allowSearch a
  • 当应用程序在后台时获取本地通知

    当应用程序在后台时 不会调用 didReceive Local notification 所以我尝试从 didFinishLaunchingWithOptions 获取通知 BOOL application UIApplication ap
  • 使用 ffmpeg 创建视频

    我有 100 张图像 PNG 我想使用这些图像创建一个视频 我为此使用 ffmpeg 库 使用命令行我可以轻松创建视频 但是我如何通过编码来做到这一点呢 任何帮助将不胜感激 pragma GCC diagnostic ignored Wde
  • 为什么我不应该对 TD(表格单元格)上的数字使用已弃用的align='right'?

    我指的是用于显示表格数据的表格的用法 例如 电子表格 重点关注numbers 我感觉并在用户体验中查看 https ux stackexchange com a 24073应该右对齐 格式正确 具有相同的小数位数 以方便求和 对于数字来说
  • 带组的 Google 柱形图

    我的数据格式 Group Count Month Year A 10 February 2015 B 8 February 2015 C 15 February 2016 我将使用过滤器来显示按组列分隔的每个月的数据 X axis会有团体
  • 将固定大小的 Map 序列化为 CBOR

    我有以下 JSON 2 c true 3 p 10 我想转换为 CBOR 格式 根据 cbor me 我有以下输出 82A102A16163F5A103A161700A 但是 当使用 Jackson Binary CBOR Serializ
  • GCC链接器找不到标准库?

    我一直在使用 XCode 开发一个学校项目 最终产品必须以带有 makefile 的源代码形式提交 因此我编写了一个 makefile 并开始以这种方式进行编译 以确保我有一个工作副本 这是我的生成文件 all main o StackLi
  • 如何扩展具有动态形成选择器的类/混合

    如何扩展使用 组合器动态形成的 Less 类 less 产生预期输出 hello world color red foo extend hello world font size 20px 预期的 CSS 输出 hello world fo
  • pandas 数据框任意两列之间的百分比差异

    我想定义一个函数来计算任意两个 pandas 列之间的百分比差异 假设我的数据框是由以下定义的 R1 R2 R3 R4 R5 R6 A B 1 2 3 4 我希望我的计算定义为 df R7 df R3 R4 apply method cal
  • 如何分组并根据总和过滤数据框?

    所以我有一个数据框 milk countries exports 它由以下列组成 期间 特定行的年份和月份 数据集是一年中的逐月 正在做出口的 记者 国家 从 报告者 进口的 伙伴 国家 商品 由 2 项组成 既不浓缩也不加糖的牛奶和奶油
  • SqlDataReader 检查空值的最佳方法 -sqlDataReader.IsDBNull 与 DBNull.Value

    我想从数据库中检索十进制值 并且想知道检查空值的推荐方法 我见过MSDN DBNull Value 字段 http msdn microsoft com en us library system dbnull value aspx该检查很少
  • 如果我递增数组变量会发生什么?

    我知道如果指针位于堆上 则更改指针的地址是不安全的 因为稍后释放它会引起一些麻烦 但是如果指针在堆栈上声明 那么这样做安全吗 我正在谈论这样的事情 char arr one two three arr or arr 我希望我通过将 char
  • Vaadin 在另一个浏览器/选项卡/系统中关闭同一用户的 UI

    我正在 Vaadin 7 中做一个项目 我需要实现如下所示的登录功能 用户 A 登录到系统 1 他再次登录到另一个系统 2 现在我想知道如何关闭系统 1 上的用户界面 我尝试了一些方法 如果是同一个浏览器 可以关闭用户界面 但是 对于不同的