使用 Spring Security 进行会话管理:并发会话

2024-05-25

我使用 Spring Security 开发了一个 Web 应用程序。对于登录,它从 LDAP 获取访问权限。现在我想使用 spring security 本身来管理会话,我可以使用authentication.getName()我正在得到username我还可以得到sessionID.

现在我想确保如果同一用户尝试使用其他浏览器从同一系统登录,他应该收到一条消息,表明他已经登录他的帐户。

任何人都可以给出如何实现这一目标的想法吗?

<security:session-management 
        invalid-session-url="/login.jsp?error=sessionExpired"
        session-authentication-error-url="/login.jsp?error=alreadyLogin">
    <security:concurrency-control 
               max-sessions="1" 
               expired-url="/login.jsp?error=sessionExpiredDuplicateLogin"
               error-if-maximum-exceeded="false" />
</security:session-management>

当我使用它并尝试使用其他浏览器登录时,出现以下错误:

HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
enter code here

我可能遗漏了一些东西,但我已经尝试了下一个配置,它按预期工作:

<!-- more configuration stuff -->

<sec:form-login login-page="/login.jsp"
    default-target-url="/defaultTarget.jsp"
    authentication-failure-url="/login.jsp?error=true"
    login-processing-url="/login" always-use-default-target="true" />

<sec:session-management>
    <sec:concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
</sec:session-management>

当我尝试从另一个浏览器使用同一用户登录时,它会将我带到 /login.jsp 并显示错误消息:Maximum sessions of 1 for this principal exceeded

编辑:您还需要将其放入您的web.xml

<listener>
    <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring Security 进行会话管理:并发会话 的相关文章

随机推荐

  • GC 行为和 CLR 线程劫持

    我在书中读到关于GC的内容CLR via C 特别是关于 CLR 何时想要开始收集 我知道它必须在收集发生之前挂起线程 但它提到当线程指令指针到达安全点时它必须执行此操作 在它不在安全点的情况下 它会尝试快速到达安全点 并且这样做是通过hi
  • React Native fetch() 在 Android 7 上抛出“网络请求失败”,但在 Android 6 上工作正常

    我已经发现 question https stackoverflow com questions 45144938 react native android fetch for https returns network request f
  • QChart 对大数据集无响应

    我的这段代码适用于高达 1000 的数据大小 现在我用 65536 个点对其进行了测试 series new QLineSeries QList
  • 如何使用 Google Apps 脚本将文件夹从我的云端硬盘复制到团队云端硬盘?

    我发现以下 Google Apps 脚本允许我将文件夹从 MyDrive 复制到 MyDrive 以及将 SharedFolders 复制到 MyDrive function start var sourceFolder source va
  • scikit-learn 中 ColumnTransformer 的自定义 Transformer 出现问题

    我想在 scikit learn 中创建一个稳定的管道来预处理数据 我试图完成的第一步是估算None对数据框中不同列应用不同策略的值 即用平均值 中位数或其他描述性统计数据替换 但是 我 我开始使用SimpleImputer变压器连同Col
  • 如何隐藏工作表?

    如何使用 googleScript 隐藏电子表格应用程序中的一些工作表 我有一个包含多个工作表的电子表格 我想使用 googlScript 将电子表格缩小为仅第一个可见工作表和所有其他隐藏工作表 sheet hideSheet https
  • ASP.NET Core 1.0 Web API 中的简单 JWT 身份验证

    我正在寻找最简单的方法来设置使用 JWT 在 ASP NET Core 又名 ASP NET 5 中进行身份验证的 Web API 服务器 这个项目 博客文章 http www codeproject com Articles 369657
  • 将一些提交移至功能分支,但将其他提交保留在主分支中

    我不确定我是否能对此做些什么 而且保持原样也不是一个巨大的困难 我确实尝试按照其他 SO 主题等的步骤来修复问题 但最终丢失了所有帮助修订提交和文件 事情有点混乱 我会尽力解释 历史在某种程度上是可以的 从resource h中删除未使用的
  • 需要更快的数组复制

    经过一些阅读后 我发现在 java 中复制数组的方式存在一些差异 对于我的应用程序 我有一个递归节点树 每个节点都包含一个 2d 板数组 8x8 通过探查器测试 我能想到的最好的办法是 java util Arrays copyOf arr
  • 无法在 Azure Synapse Analytics 中创建表

    我是 Azure Synapse Analytics 的新手 我已经在工作区中创建了数据库 但是当我尝试创建新表时 它显示以下错误 执行查询失败 错误 不支持 CREATE TABLE 附上错误截图和查询 Answer recommende
  • 具有继承的静态块的行为

    我正在尝试使用这样的静态块 我有一个基类叫做Base java public class Base static public int myVar 和一个派生类Derived java public class Derived extend
  • LSTM 和 CNN:ValueError:检查目标时出错:预期 time_distributed_1 有 3 个维度,但得到形状为 (400, 256) 的数组

    我要申请CNN and LSTM在我的数据上 我只选择一小部分数据 我的训练数据大小是 400 50 我的测试数据是 200 50 仅使用 CNN 模型 它可以正常工作 没有任何错误 只是在添加 LSTM 模型时出现了很多错误 model
  • 调用了 BroadcastReceiver 但未调用 PhoneStateListener

    在调试下面的代码时 BroadcastReceiverCustom 正在被 已调用 但 PhoneStateListenerCustom 未调用 现在我只在 BroadcastReceiverCustom 中执行所需的操作 但可能不是最好的
  • 如何使用 Sequelize 对 3 个表进行分组?

    我的模型是 module exports function sequelize DataTypes var CommitFileStatistic return CommitFileStatistic sequelize define Co
  • AVExportSession 在后台运行

    我正在开发一款需要合并多个视频的应用程序 我在用AVExportSession导出合并的视频 我还显示导出视频的进度条 大多数时候它都运行正确 当我们锁定屏幕或将应用程序置于后台模式时 就会出现此问题 这次 如果导出正在进行中 则将应用程序
  • 堆内存问题

    有一个 WCF 自托管服务必须在 99 的时间内正常工作 有时我们会遇到这样的记忆问题 但问题发生后 服务一切正常 我们该如何处理这个问题 任何关于提供能够在不同情况下生存的强大服务的提示和要点都非常受欢迎 我不太确定问题出在哪里 但内存泄
  • 如何在Ubuntu 22.04上安装python3.6

    我需要安装这个特定的python版本 以准备开发人员环境 因为我正在维护一个包含多个基于python 3 6 9的库的系统 我最近在笔记本电脑上安装了 Ubuntu 22 04 但尝试安装这个 python 版本没有成功 我尝试安装添加 d
  • 在 Ruby Net::HTTP.start 中为服务调用设置 read_timeout

    我想在我的 ruby 代码中覆盖服务调用的默认超时 我打开连接如下 res Net HTTP start task url host task url port do http http get tasks task id end 我尝试将
  • 使用 Opera 在 JavaScript 中更新图像源

    我定期使用 Image 对象加载远程图像 以便稍后在画布上绘制 Image 对象仅在 JS 中创建 它不存在于 DOM 中 该代码在 Chrome 和 Firefox 上运行良好 在 Opera 中 问题在于 每当修改图像源时 浏览器似乎总
  • 使用 Spring Security 进行会话管理:并发会话

    我使用 Spring Security 开发了一个 Web 应用程序 对于登录 它从 LDAP 获取访问权限 现在我想使用 spring security 本身来管理会话 我可以使用authentication getName 我正在得到u