首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法使用maximumSessions和maxSessionsPreventsLogin在spring-boot中设置并发会话控制

在Spring Boot中,可以使用maximumSessions和maxSessionsPreventsLogin属性来设置并发会话控制。这两个属性用于限制同一用户的并发登录会话数量。

  • maximumSessions属性用于设置最大会话数,即同一用户可以同时拥有的最大会话数量。默认值为-1,表示不限制会话数量。
  • maxSessionsPreventsLogin属性用于设置当达到最大会话数时的处理方式。设置为true时,新的登录请求将被拒绝;设置为false时,新的登录请求将踢出已有的会话。

这两个属性可以通过在Spring Boot的配置文件中进行配置,例如application.properties或application.yml文件。

示例配置:

application.properties:

代码语言:txt
复制
spring.session.servlet.session.maximum-sessions=2
spring.session.servlet.session.max-sessions-prevents-login=true

application.yml:

代码语言:txt
复制
spring:
  session:
    servlet:
      session:
        maximum-sessions: 2
        max-sessions-prevents-login: true

这样配置后,同一用户最多只能同时存在两个会话,当达到最大会话数时,新的登录请求将被拒绝。

在Spring Boot中,可以使用Spring Session框架来实现并发会话控制。Spring Session提供了与Servlet容器无关的API,可以方便地进行会话管理。

推荐的腾讯云相关产品是腾讯云服务器(CVM)和腾讯云数据库(TencentDB),它们提供了可靠的云计算基础设施和数据库服务,适用于各种应用场景。

腾讯云服务器(CVM)产品介绍链接:https://cloud.tencent.com/product/cvm 腾讯云数据库(TencentDB)产品介绍链接:https://cloud.tencent.com/product/cdb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【SpringSecurity系列(十三)】只允许一台设备在线

这种思路都能实现这个功能,具体使用哪一个,还要看我们具体的需求。 Spring Security ,这两种都很好实现,一个配置就可以搞定。...(1); } maximumSessions 表示配置最大会话数为 1,这样后面的登录就会自动踢掉前面的登录。...配置完成后,分别用 Chrome Firefox 两个浏览器进行测试(或者使用 Chrome 的多用户功能)。 Chrome 上登录成功后,访问 /hello 接口。...可以看到,这里说这个 session 已经过期,原因则是由于使用同一个用户进行并发登录。...4.小结 如此,两行简单的配置就实现了 Spring Security session 的并发管理。是不是很简单?不过这里还有一个小小的坑,松哥将在下篇文章中继续大家分析。

89410

【SpringSecurity系列(十七)】Spring Security 如何处理 Session 共享

1.集群会话方案 传统的单服务架构,一般来说,只有一个服务器,那么不存在 Session 共享问题,但是分布式/集群项目中,Session 共享则是一个必须面对的问题,先看一个简单的架构图: ?...一文我们配置的 session 并发管理失效了。...(1) .maxSessionsPreventsLogin(true); } 现在这个配置不起作用,用户依然可以多个浏览器上同时登录。...Nginx 上转发到该服务上 location 的 proxy_pass 表示请求转发的地址,/ 表示拦截到所有的请求,转发转发到刚刚配置好的服务集群 proxy_redirect 表示设置当发生重定向请求时...如果大家没有 SSM 架构中用过 Spring Session ,可能不太好理解我们 Spring Boot 中使用 Spring Session 有多么方便,因为 SSM 架构,Spring

1.1K10

Spring Security---ONE

/sysuser" roles()方法用于指定用户的角色,一个用户可以有多个角色 ---- 静态资源访问 我们的实际开发,登录页面login.html控制层Controller登录验证’/login...---- 会话超时管理 session会话超时时间配置 Spring boot应用中有两种设置会话超时时间的方式,Spring Security对这两种方式完全兼容,即:当会话超时之后用户需要重新登录才能访问应用...注意:Spring BootSession超时最短的时间是一分钟,当你的设置小于一分钟的时候,默认为一分钟。...”时,原始会话不会无效 设置“newSession”后,将创建一个干净的会话,而不会复制旧会话的任何属性 migrateSession - 即对于同一个cookies的SESSIONID用户,每次登录访问之后访问将创建一个新的...然后关闭浏览器再次测试,设置maxSessionsPreventsLogin为true,重启应用。先在一个浏览器登录的用户可以登陆,但是另一个浏览器再次登陆就无法登陆,会被拒绝。

1.9K10

Spring Security+Spring Social+SpringBoot集成Restful可配置安全模块及代码生成器

登录类型 JSON/REDIRECT gwf.security.browser.signUpUrl //社交用户注册url gwf.security.browser.signOutUrl //退出页面,不设置则退出返回...json gwf.security.browser.rememberMeSeconds //记住我时间 gwf.security.session.maximumSessions //同一个用户系统的最大...session数,默认1 gwf.security.session.maxSessionsPreventsLogin //达到最大session时是否阻止新的登录请求,默认为false,不阻止,新的登录会将老的登录失效掉...根据业务基础代码上进行扩展 5. 对开发环境配置文件```application-dev.yml```进行配置,启动项目,Have Fun!...使用详情请见 https://toutiao.io/posts/qqonfm app 安全模块目前正在持续更新。。。

2K20

Spring Security 6.x 一文讲透Session认证管理机制

),最后会在Response设置对应的Cookie,写入浏览器客户端。...不同实现类对应的策略对当前session进行处理,例如session并发控制,session固定攻击等,不过SessionManagementFilter新版本是默认不开启的,官方文档给出的解释是每次请求都要读取...Session并发控制,最常用的场景就是限制一个账号无法让多个客户端同时登录,即当第二个客户端发起登录,并认证通过之后,前一次认证的session就会被置为过期,用户也会被强制登出。...3.4 Session固定攻击保护所谓Session固定攻击,主要是指用户登录前登录后所使用的session保持不变,这样攻击者可以事先准备好一个session,然后诱导用户使用该session进行登录...SPRING_SECURITY_CONTEXT”Spring Security框架提供若干session管理的配置,常见的有session并发控制,session固定攻击session并发控制主要由策略实现类

13311

SpringSecurity入门

核心功能:认证授权 认证:authentication 介绍:简单说就是你是谁,比如说你是哪个用户,系统中使用用做登录 授权:authorization 介绍:简单说就是能干什么,比如说我是管理员...1)InMemoryUserDetailsManager 不过在此之前,我们先使用InMemoryUserDetailsManager.java,在内存设置用户 package com.banmoon.security.config...只需要设置maxSessionsPreventsLogin(true),再设置一个HttpSessionEventPublisher的bean即可 @Configuration public class...(1)// 设置最大会话为1,这样就会挤掉前面登录的那个了 .maxSessionsPreventsLogin(true);// 防止最大会话数时新的登录...所以这里结合Map容器就有了一个坑,那就是使用对象作为Map容器的key时,记得要重写他们的equal()hashCode()这两个方法。至于为什么,这是Map容器的知识。。。

1.4K20

微人事如何像 QQ 一样实现登录互踢?松哥手把手教大家

上篇文章,我们讲了 Spring Security 如何踢掉前一个登录用户,或者禁止用户二次登录,通过一个简单的案例,实现了我们想要的效果。...map 集合,集合的 key 就是用户的主体(principal),正常来说,用户的 principal 其实就是用户对象,松哥之前的文章大家讲过 principal 是怎么样存入到 Authentication...如果你使用了 MyBatis 而不是 Jpa,也是一样的处理方案,只需要重写登录用户的 equals 方法 hashCode 方法即可。...3.微人事应用 3.1 存在的问题 由于微人事目前是采用了 JSON 格式登录,所以如果项目控制 session 并发数,就会有一些额外的问题要处理。...4.小结 好了,本文主要和小伙伴们介绍了一个 Spring Security 处理 session 并发问题时,可能遇到的一个坑,以及在前后端分离情况下,如何处理 session 并发问题。

1.3K20

将 Web 应用丢给守护进程

对于 Spring Boot,我们可以终端使用 mvn spring-boot:run 在前台跑 Web 服务;对于 React 前端应用,我们可以使用 npm script 即 npm start...什么是 session 会话(session)是一个若干进程组的集合,同样的,系统每一个进程组也都必须从属于某一个会话;一个会话只拥有最多一个控制终端(也可以没有),该终端为会话中所有进程组的进程所共用...一个会话前台进程组只会有一个,只有其中的进程才可以控制终端进行交互;除了前台进程组外的进程组,都是后台进程组;进程组先导类似,会话也有会话先导(session leader)的概念,用来表示建立起到控制终端连接的进程...拥有控制终端的会话,session leader 也被称为控制进程(controlling process),一般来说控制进程也就是登入系统的 shell 进程(login shell); OK,回到我们的问题...守护进程 session 关闭时不会受影响。守护进程的会话当前目录,文件描述符都是独立的。后台运行只是终端进行了一次fork,让程序在后台执行,这些都没改变。

1.5K70

Spring Security的认证授权

我们暂时使用InMemoryUserDetailsManager实现类,并在其中分别创建了zhangsan、lisi两个用户,并设置密码权限。...会话超时 可以再sevlet容器设置Session的超时时间,比如设置Session有效期为3600秒,修改spring boot配置文件: server.servlet.session.timeout...error=EXPIRED_SESSION"); invalidSession指传入的sessionid无效,expired指session过期,maximumSessions指最大session并发数...安全会话cookie 我们可以使用httpOnlysecure标签来保护我们的会话cookie,修改spring boot配置文件: server.servlet.session.cookie.http‐only...使用注解后,可以移除安全配置的http.authorizeRequests()设置访问控制的代码,如果方法不包含授权注解,则方法可以不受限制的访问。

2.1K30

数据库时间 java 时间不一致解决方案

Java添加 date 到数据库,时间不一致 使用 date 添加到数据库,数据库显示的时候date时间相差 8 个小时,这是由于 mysql 上的时区的问题,这里有两个解决方案: 方案一:设置数据库连接时区... springboot 的配置文件的 spring.datasource.url 添加后缀 serverTimezone=Asia/Shanghai。...方案二:设置 mysql 时区 查看 mysql 时区: show variables like "%time_zone%"; 这里分成修改当前会话全局会话 修改当前会话只对当前会话有效,退出会话就失效...Java 获取 date 时间前端展示不一致 后端时间和数据库时间相差 8 个小时 原因 springboot 的@RestController 注解接口返回 json 格式数据,对于 date 类型的数据...,会被 spring-boot 默认的Jackson框架转化,而 Jackson 框架默认时区是 GMT(相对于中国少了 8 个小时)。

1.1K20

玩转 Spring Boot 应用篇(引入Redis解决店铺高并发读的问题)

菜菜的店铺技术实现很简单,基于 MySQL 进行增删改查而已,而此时的架构面对高并发查询商品列表的情况下,势必会对数据库带来一定的查询压力,况且数据库操作是一个对磁盘的操作过程,性能上会存在一定的问题...().entries(GOODS_LIST_CACHE_KEY); // 缓存的商品列表为空,则从库中加载然后放入缓存(此操作可以前置,商品管理时加入到缓存) if (MapUtils.isEmpty...菜菜店铺升级验证 服务端控制输出 首次查询时会把数据库的商品缓存至 redis(如上图示意),后续的商品查询都优先从 redis 返回,此时店铺页面购买访问正常,一定程度上减轻了数据库的访问压力。...例行回顾 本文主要是对菜菜的店铺的高并发读带来的数据库查询压力进行环节,主要引入基于内存操作的 Redis 来解决商品高并发查询的问题。...不愿迈出前行的脚步,就无法到达最美的远方;不肯跳出眼前的安逸,就无法感受生活的多彩。

48130

Spring Boot+redis存储session,满足集群部署、分布式系统的session共享

本文讲述spring-boot工程中使用spring-session机制进行安全认证,并且通过redis存储session,满足集群部署、分布式系统的session共享。...java工程,说到权限管理安全认证,我们首先想到的是Spring SecurityApache Shiro,这两者均能实现用户身份认证复杂的权限管理功能。...但是如果我们只是想实现身份认证(如是否登录、会话是否超时),使用session管理即可满足。本文目录如下: 目录:   1. 创建spring-boot项目   2. 用户管理   3....使用redis共享session ---- 一、创建spring-boot项目 1、工程使用idea+gradle搭建,jdk1.8,spring-boot版本2.0.2.RELEASE,数据库postgreSQL...微信截图_20180512184322.png-66.2kB 四、spring-session配置 该部分为重点内容了,目的是实现访问资源时的安全认证、超时控制用户登出功能。

3.1K31

快速入门系列--WCF--06并发限流、可靠会话队列服务

对于WCF服务来说,其寄宿一个资源有限的环境,为了实现服务性能最大化,需要提高其吞吐量即服务的并发性。然而在不进行流量控制的情况下,并发量过多,会使整个服务由于资源耗尽而崩溃。...ServiceThrottle三个流量限制器就像是设置信道分发器的三道闸门,第一道限制并发会话的流量,第二道限制并发请求的数量,第三道限制并发实例上下文的数量。...使用缓冲区可以提高服务的可用性,推荐发送方接受方使用相同的MaxTransferWindowSize 启动流控制 为了确保发送方接收方步调一致,推荐将FlowControlEnabled设置为true...,默认为4 可靠会话宿主 可靠会话是有状态的,有AppDomain维护,双工场景下,默认每个客户端需要两条HTTP连接,因此可能出现资源使用过量死锁的情况,这是需要如下设置来处理。...步骤4设置DTC,控制面板的管理工具设置,如下图所示。 ?

97270

SpringBoot 项目中,Spring Security Shiro 该如何选择?

开始本文之前,我们做个问卷调查,看看胖友都在使用哪个?...使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络企业应用程序。 执行流程 ?...) Access Control(访问控制,也就是what are you allowed to do?,也称为Authorization)。...Spring Security架构上将认证与授权分离,并提供了扩展点。它是一个轻量级的安全框架,它确保基于Spring的应用程序提供身份验证授权支持。...如果项目没有使用Spring这一套,不用考虑,直接Shiro。 同时要考虑团队成员的技术栈,更加熟悉使用哪个,选型上,也要尽量避免给同行增加不必要的学习成本!

1.1K20

Linux之守护进程理解(2)

2、脱离控制终端,登录会话进程组 登录会话可以包含多个进程组,这些进程组共享一个控制终端,这个控制终端通常是创建进程的登录终端。控制终端,登录会话进程组通常是从父进程继承下来的。...调用成功后,进程成为新的会话组长新的进程组长,并与原来的登录会话进程组脱离,由于会话过程对控制终端的独占性,进程同时与控制终端脱离。...如 果父进程等待子进程结束,将增加父进程的负担,影响服务器进程的并发性能。系统V下可以简单地将SIGCHLD信号的操作设为SIG_IGN,即忽略掉。...,并与原来的登录会话进程组脱离,由于会话过程对控制终端的独占性,进程同时与控制终端脱离。...signal(SIGCHLD,SIG_IGN);     //守护进程不属于任何终端,所以当需要输出某些信息时,它无法像一般程序那样将信息直接输出到终端,可以使用linux自带的syslogd守护进程

2.5K30

如何优雅关闭 Spring Boot 应用

上述代码定义的 TIMEOUT 变量为 Tomcat 线程池延时关闭的最大等待时间,一旦超过这个时间就会强制关闭线程池,也就无法处理所有请求了,我们通过控制 Tomcat 线程池的关闭时机,来实现优雅关闭...他们共同的特点就是继承同个抽象类 AbstractServletWebServerFactory,提供了 Web 容器默认的公共实现,如应用上下文设置会话管理等。...好了说回正题,我们这里使用 addConnectorCustomizers 方法将自定义的 Connector 行为添加到内嵌的Tomcat 之上,为了查看加载效果,我们可以 Spring Boot... Spring Boot Actuator 也提供控制应用关闭的功能,所以我们要为应用引入 Spring Boot Actuator,具体方式就是要将对应的 starter 依赖添加到当前项目中,以...Shutdown Endpoint,配置文件 application.properties 设置如下 ?

1.6K10
领券