Spring Security并发会话控制示例教程–如何限制Java JEE Web应用程序中的用户会话数...

如果您不知道, Spring安全性可能会限制用户可以拥有的会话数。 如果要开发Web应用程序,尤其是Java JEE中的安全Web应用程序 ,则必须提出与在线银行门户相似的要求,例如, 每个用户一次只能有一个会话,或者每个用户没有并发会话 。 即使您也可以在不使用Spring安全性但使用Spring安全性的情况下实现此功能,它只是小菜一碟:)。 您只需要在spring安全配置文件中添加几行XML,就可以完成。 为了实现此功能,可以使用<concurrency-control>标记。 您可以配置应用程序支持的最大会话数,然后Spring安全性将自动检测用户是否违反了限制,并将其定向到您使用此标记指定的无效会话URL,例如定向到注销页面。
与此类似, Spring Security提供了许多现成的功能,这是authenticationauthorizationsession managementpassword encodingsecure accesssession timeout等所需的安全企业或Web应用程序。

在我们的Spring安全性示例中,我们看到了如何使用Spring安全性在Active Directory中执行LDAP身份验证,并且在此Spring安全性示例中,我们将看到如何限制Java Web应用程序中用户可以拥有的会话数或如何限制并发用户会话。

Spring Security示例:限制用户会话数

就像我说的那样,当您使用spring安全框架或库时,这很容易。 实际上,所有内容都是声明性的,不需要任何代码即可启用并发会话以禁用功能

您将需要在您的Spring Security Configuration文件中包含以下xml片段,该片段主要命名为
applicaContext-security.xml 。 这是示例Spring安全性限制Java Web应用程序中用户会话的示例

<session-management invalid-session-url="/logout.html"><concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
</session-management>

如您所见,您可以指定每个用户允许多少个并发会话 ,最安全的系统(如在线银行门户)仅允许每个用户一个经过身份验证的会话。

您甚至可以指定一个URL,如果用户提交无效的会话标识符,则该用户将被带到该URL,该URL可用于检测会话超时。 session-management元素用于捕获与会话相关的内容。

Max-session指定允许多少个并发身份验证会话,如果将error-if-maximum-exceeded Max-session error-if-maximum-exceeded设置为true,则在用户尝试登录另一个会话时将标记错误。

例如,如果您尝试从浏览器两次登录到该Spring Security应用程序,那么您将收到一条错误消息,指出“此主体超过最大会话数为1” ,如下所示:

相依性

此代码依赖于spring-security框架。 您需要下载spring安全罐(例如spring-security-web-3.1.0.ja r)并将其添加到应用程序classpath中 。

这个简单的Spring Security示例展示了Spring Security的强大功能,一小段xml代码段可以在Java Web应用程序中添加非常有用且方便的安全功能

我强烈建议对使用Servlet JSP创建的新Java Web应用程序或现有Java Web应用程序使用spring security。

这就是如何在Java Web应用程序中使用Spring Security限制用户会话数的全部内容。 让我知道您在项目中实施此安全功能时是否遇到任何问题。

翻译自: https://www.javacodegeeks.com/2018/04/spring-security-concurrent-session-control-example-tutorial-how-to-limit-number-of-user-session-in-java-jee-web-application.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

prometheus命令_Prometheus 入门

学习安装 Prometheus 监控和警报系统并编写它的查询。-- Michael Zamot(作者)Prometheus 是一个开源的监控和警报系统&#xff0c;它直接从目标主机上运行的代理程序中抓取指标&#xff0c;并将收集的样本集中存储在其服务器上。也可以使用像 collectd_exporter 这样的插件推送…

正则表达式的命名分组

语法格式&#xff1a;(?<name>…) 命名分组也是捕获性分组&#xff0c;它将匹配的字符串捕获到一个组名称或编号名称中&#xff0c;在获得匹配结果后&#xff0c;可通过分组名进行获取。 如下是一个python的命名分组的例子&#xff1a; import re data "#80808…

python--字符/文本编码解码笔记

字符/文本编码解码笔记1.字符问题编码和解码2.字节概要3.基本的编解码器编码类型史字符编码ASCII码GB2312以及其他编码UNICODE标准编码UTF-8编码4.了解编解码问题处理UnicodeEncoderError解决方法:处理UnicodeDecodeError解决方法5.修改源代码编码6.查看文件编码方式终端查看文…

neo4j cypher_Neo4j:Cypher – Neo.ClientError.Statement.TypeError:不知道如何添加Double和String...

neo4j cypher最近&#xff0c;我将支持Neo4j的应用程序从Neo4j 3.2升级到Neo4j 3.3&#xff0c;发现围绕类型强制的行为发生了有趣的变化&#xff0c;导致我的应用程序抛出了很多错误。 在Neo4j 3.2和更早版本中&#xff0c;如果将String添加到Double&#xff0c;它将把Double…

easyui数据表格显示复选框_【Excel技巧】使用控件一键切换实现单位元和万元随意显示...

工欲善其事&#xff0c;必先利其器。职场上亦是如此。Excel报表想要做得完美&#xff0c;首先肯定Excel要精通。做一份Excel报表&#xff0c;如果涉及到金额&#xff0c;当金额比较大&#xff0c;单位到底是用元还是万元&#xff0c;经常是大家纠结的一个问题。我们今天就来介绍…

正则表达式的固化分组

固化分组&#xff0c;又叫原子组。 语法格式&#xff1a;(?>…) 我们在使用非贪婪模式时&#xff0c;匹配过程中可能会进行多次的回溯&#xff0c;回溯越多&#xff0c;正则表达式的运行效率就越低。而固化分组就是用来减少回溯次数的。 实际上&#xff0c;固化分组 (?…

Requests库基本使用

requests库基本使用基本流程python中一个基于网络请求的模块&#xff0c;功能强大&#xff0c;简单便捷&#xff0c;效率极高&#xff0c;可以取代古老的urllib模块。作用&#xff1a;模拟浏览器向服务器发起请求。基本流程 1.指定URL2.对指定的URL发起请求(get或post)3.获取响…

tls 使用java生成_同时使用传入和传出连接时,相互TLS身份验证存在Java问题

tls 使用java生成在大多数企业环境中&#xff0c;应用程序之间的连接中使用某种形式的安全通信&#xff08;例如TLS或SSL&#xff09;。 在某些环境中&#xff0c; 相互&#xff08;双向&#xff09;身份验证也是一项非功能性要求。 有时将其称为双向SSL或双向TLS身份验证。 因…

正则表达式的环视实际应用案例

一、千位分隔符案例&#xff08;一&#xff09; 逆序环视和顺序环视结合应用。 **需求&#xff1a;**数字格式化成用 , 分隔的货币格式。 正则表达式&#xff1a;(?n)(?<\d)(?<!\.\d*)(?(\d{3})(\.|$)) 测试代码&#xff1a; double[] data new double[] { 0,…

软件工程专插本_2021年专插本部分招生专业(拟),广科/广东理工/华商/培正/松田/工商大!...

小师姐从各专插本交流群中收集到了6所院校的2021年本科插班生拟招生专业&#xff1a;广东理工学院、广东科技学院、广东财经大学华商学院、广州大学松田学院、广东培正学院、广东工商职业技术大学。ps&#xff1a;以下只是拟招生专业&#xff0c;具体还是以考试院公布的为准。另…

Requests库实战(一)---网页采集器

网页采集器User-Agent伪装完整代码功能&#xff1a;通过动态url来实现用户输入搜索关键字&#xff0c;返回搜索到的页面。User-Agent伪装 一种反爬机制。 原理&#xff1a;网站的服务器会检测对于请求的载体身份标识&#xff0c;如果检测到请求的载体身份标识为某一款浏览器&a…

ES6 对正则表达式的扩展

文章目录修饰符 y修饰符 uECMAScript 6.0&#xff08;以下简称 ES6&#xff09;是 JavaScript 语言的下一代标准&#xff0c;已经在 2015 年 6 月正式发布了。它的目标&#xff0c;是使得 JavaScript 语言可以用来编写复杂的大型应用程序&#xff0c;成为企业级开发语言。修饰符…

transformer机制讲解_【核心代码解读】Transformer-XL

[论文] Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context​arxiv.orgMotivationTransformer在预训练阶段&#xff0c;设置了固定序列长度max_len的上下文&#xff0c;finetuning阶段&#xff0c;模型不能获取大于max_len的上下文依赖&#xff1b;Tran…

Neo4j导入:java.lang.IllegalStateException:不支持在单个导入中混合指定和未指定的组所有物...

休息片刻之后&#xff0c;我最近一直在使用Neo4j导入工具 &#xff0c;并遇到了我最初不理解的有趣的错误消息。 我有一些CSV文件&#xff0c;其中包含要导入Neo4j的节点。 它们的内容如下所示&#xff1a; $ cat people_header.csv name:ID(Person)$ cat people.csv "…

Requests库实战(二)---破解百度翻译

功能&#xff1a;爬取到页面中翻译后的文本数据 获取请求地址和请求方式 先输入dog翻译一下&#xff0c;发现是Ajax请求(动态实时刷新页面)&#xff0c;Ajax请求的数据包可以在网络的XHR中看到。找到输入dog的数据包&#xff0c;通过标头的表单数据kw:dog以及响应的结果就可以…

局部变量的赋值问题

int i 5; i 10;变量 i 在栈帧里面的局部变量表里面&#xff0c;这个局部变量表类似一个数组&#xff0c;里面包含了一些“槽位”来存放局部变量&#xff0c;i 这个变量&#xff0c;就是在局部变量表中的某一个槽位里面&#xff0c;并且 i 只会占用一个槽位&#xff0c;对变量…

php生成 sku_高并发下,php与redis实现的抢购、秒杀功能

抢购、秒杀是如今很常见的一个应用场景&#xff0c;主要需要解决的问题有两个&#xff1a;1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少&#xff08;"超卖"问题&#xff09;对于第一个问题&#xff0c;已经很容易想到用缓存来处理抢购&#xff0c;…

lambda :: -_无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!

lambda :: ->如果你还没有注意到了&#xff0c;我最近被唠叨试图开始使用时&#xff0c;我遭遇了陷阱AWSλ-S3正式例子 。 虽然大多数这些愚蠢的错误的指责是对我自己的懒惰&#xff0c;过度自尊和缺乏对细节的关注&#xff0c;我个人觉得&#xff0c;在开始与一家领先的无服…

Requests库实战(三)---爬取豆瓣电影详细信息

完整代码 爬取豆瓣电影的详细信息 地址&#xff1a;豆瓣电影动画 向下滑动时新增的数据也是Ajax请求&#xff0c;原理和上一个项目是一样的。唯一的不同是此处请求url携带了多个参数 import requests import json header{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x6…

lineseparator_首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串

lineseparatorJDK 7在java.lang.System类上引入了一个名为lineSeparator&#xff08;&#xff09;的新方法。 该方法不期待任何参数&#xff0c;并返回一个String &#xff0c;它表示“取决于系统的行分隔符字符串。” 此方法的Javadoc文档还指出System.lineSeparator() “始终…