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上将其用于检测会话超时。 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应用程序使用spring安全性。

这就是如何在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值