当前位置: 首页 > 知识库问答 >
问题:

Spring Security并发会话:无法使“max-sessions”字段可配置

姜志行
2023-03-14
<security:session-management>
    <security:concurrency-control max-sessions="${maxConcurrentSessionsCount}" session-registry-ref="sessionRegistry" expired-url="/handleInvalidatedSession.gs4tr"/>
</security:session-management>`
"attribute 'max-sessions' on element 'security:concurrency-control' is not valid with respect to its type, 'positiveInteger'".

编辑:在“services.properties”中配置为:“MaxConcurrentSessionsCount=2”

在启动应用程序时,它抛出下一个错误:

No, it doesn't. It throws next ERROR on starting app:

017-09-14 15:46:47,724错误[org.gs4tr.projectdirector.service.context.contextLoaderListener][localhost-startStop-1][user:]-org.springframework.beans.factory.XML.xmlBeanDefinitionStoreException:来自类路径资源[org/gs4tr/foundation/modules/webmvc/spring/applicationcontext-security-default.XML]的XML文档中的第75行无效;嵌套异常是org.xml.sax.SaxParseException;亚麻编号:75;专栏编号:72;CVC-datatype-valid.1.2.1:“${maxConcurrentSessionsCount}”不是“integer”的有效值。在org.springframework.beans.factory.xml.xmlBeanDefinitionReader.doloadBeanDefinition(xmlBeanDefinitionReader.java:399)在org.springframework.beans.factory.xml.xmlBeanDefinitionReader.xml.xmlBeanDefinitionReader.loadBeanDefinition(xmlBeanDefinitionReader.java:336)在181)在org.springframework.beans.factory.support.abstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)在org.springframework.beans.factory.support.abstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)在4)在org.springframework.context.support.AbstractRefreshableApplicationContext.java:129)在org.springframework.context.support.AbstractApplicationContext.regresh(AbstractApplicationContext.java:537)在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:452)在:306)在org.springframework.web.context.contextLoaderListener.contextInitialized(contextLoaderListener.java:106)在org.gs4tr.projectDirector.service.context.context.contextLoaderListener.contextInitialized(contextLoaderListener.java:73)在org.apache.catalina.core.standardContext.listenerstart(standardContext.java:4811)在pache.catalina.util.lifecyclebase.start(Lifecyclebase.java:147)

共有1个答案

鲁鸿朗
2023-03-14

这是max-session属性的定义:

<xs:attribute name="max-sessions" type="xs:positiveInteger">
<xs:annotation>
<xs:documentation>
The maximum number of sessions a single authenticated user can have open at the same time. Defaults to "1".
</xs:documentation>
</xs:annotation>
</xs:attribute>

可以看到,属性的类型是PositiveInteger,并且不允许使用SPEL。

SpEL(例如,获取属性值)是一个字符串,在某些情况下,您可以使用SpEL:

 类似资料:
  • HTTP是无状态的; 为了将请求与任何其他请求相关联,您需要一种在HTTP请求之间存储用户数据的方法。 Cookie和URL参数都是在客户端和服务器之间传输数据的合适方式。 但它们都是可读的并且在客户端。 Sessions解决了这个问题。 您为客户端分配一个ID,并使用该ID进行所有进一步的请求。 与客户端关联的信息存储在链接到此ID的服务器上。 我们需要Express-session ,所以使用

  • 与Cookie不同,会话数据存储在服务器上。 会话是客户端登录到服务器并注销的时间间隔。 需要在此会话中进行的数据存储在服务器上的临时目录中。 与每个客户端的会话分配一个会话ID。 会话数据存储在cookie顶部,服务器以加密方式签名。 对于这种加密,Flask应用程序需要一个定义。 会话对象也是一个包含会话变量和关联值的键值对的字典对象。 例如,要设置会话变量,请使用语句 - 要删除会话变量,请

  • cPanel FTP Session界面显示当前用户,这些用户通过FTP登录到网站。 此界面很有用,它可以帮助您通过一次单击终止不需要的连接。 要访问此功能,请单击cPanel的“文件”部分中的“FTP会话”链接。 它将打开一个界面,在其中显示登录到您站点的当前用户。 如果没有用户登录,则会显示没有用户登录的消息。 在这里它将显示以下信息 - Example User 显示登录用户的用户名 lip

  • 我正在尝试开发一个带有spring boot的项目,它将被员工用于休假或休假,我也将crud操作用作Rest web服务,但是我在thymeleaf的th:字段中遇到了一个问题,它会生成错误:org.thymeleaf.exceptions.templateProcessingException:在执行处理器'org.thymeleaf.spring5.processor.springInputG

  • HTTP是无状态的,因此为了将请求与任何其他请求相关联,您需要一种在HTTP请求之间存储用户数据的方法。 Cookie和URL参数都是在客户端和服务器之间传输数据的合适方式。 但是,它们在客户端都是可读的。 Sessions解决了这个问题。 您为客户端分配一个ID,并使用该ID进行所有进一步的请求。 与客户端关联的信息存储在链接到此ID的服务器上。 我们需要koa-session,因此使用 - 安

  • 如前所述,我们可以使用客户端cookie为Web应用程序存储大量有用的数据。 我们之前已经看到,我们可以使用客户端cookie来存储对我们的Web应用程序有用的各种数据。 这会导致许多安全漏洞,具体取决于您要保存的数据的重要性。 出于安全原因,Django有一个用于cookie处理的会话框架。 会话用于抽象cookie的接收和发送,数据保存在服务器端(如数据库中),客户端cookie只有一个会话I