当前位置: 首页 > 面试题库 >

Spring Security并发控制

殷学
2023-03-14
问题内容

我已经使用了Spring Security 3.0.7,并且正在我的项目中实现并发控制。但这是行不通的。我用过了

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

甚至我尝试了Spring安全参考中的解决方案,但没有成功。这是我的配置文件内容:

  <session-management session-authentication-strategy-ref="sas"/>
</http>

<beans:bean id="concurrencyFilter"
   class="org.springframework.security.web.session.ConcurrentSessionFilter">
  <beans:property name="sessionRegistry" ref="sessionRegistry" />
  <beans:property name="expiredUrl" value="/session-expired.htm" />
</beans:bean>

<beans:bean id="myAuthFilter" class=
   "org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter">
  <beans:property name="sessionAuthenticationStrategy" ref="sas" />
  <beans:property name="authenticationManager" ref="authenticationManager" />
</beans:bean>

<beans:bean id="sas" class=
 "org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy">
  <beans:constructor-arg name="sessionRegistry" ref="sessionRegistry" />
  <beans:property name="maximumSessions" value="1" />
</beans:bean>

<beans:bean id="sessionRegistry"
    class="org.springframework.security.core.session.SessionRegistryImpl" />

我收到以下异常:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Filter beans '<myAuthFilter>' and '<org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0>' have the same 'order' value. When using custom filters, please make sure the positions do not conflict with default filters. Alternatively you can disable the default filters by removing the corresponding child elements from <http> and avoiding the use of <http auto-config='true'>.
Offending resource: class path resource [config/auth.xml]
    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:72)
    at org.springframework.security.config.http.HttpSecurityBeanDefinitionParser.checkFilterChainOrder(HttpSecurityBeanDefinitionParser.java:196)
    at org.springframework.security.config.http.HttpSecurityBeanDefinitionParser.parse(HttpSecurityBeanDefinitionParser.java:132)
    at org.springframework.security.config.SecurityNamespaceHandler.parse(SecurityNamespaceHandler.java:86)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1338)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1328)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:93)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)

有人可以帮忙解决这个问题吗?


问题答案:

如果您已经编写了UserPrincipalUserPrincipalImpl(您自己的实现),则应该重写Object
equals()hashCode()方法。



 类似资料:
  • 主要内容:并发控制的问题在并发控制中,可以同时执行多个事务。 它可能会影响事务结果。保持这些事务的执行顺序非常重要。 并发控制的问题 并发事务以不受控制的方式执行时可能会出现几个问题。 以下是并发控制中的三个问题。 更新丢失 脏读 不可重复读取 1. 更新丢失 当访问相同数据库项的两个事务包含其操作时,某些数据库项的值不正确,则会发生丢失的更新问题。 如果两个事务T1和T2读取记录然后更新它,那么第二个更新将覆盖更新第一

  • 配置样例 样例 1 限制 com.foo.BarService 的每个方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个: <dubbo:service interface="com.foo.BarService" executes="10" /> 样例 2 限制 com.foo.BarService 的 sayHello 方法,服务器端并发执行(或占用线程池线程数)不能超过 10

  • 如果一个语言要实现支持并发执行的接口,则一般来说需要在并发控制上下功夫,原因就是前面说的,由于虚拟机实现的细节问题,直接依赖宿主环境的并发容易出问题。简单地,以使用宿主的线程为例。假如源语言的线程对应宿主环境的真线程,那么同步操作就需要用到线程间的互斥量,比如锁,信号量等 一个程序需要并发,一般来说有三个原因: 一,为充分利用多核cpu资源,提高计算速度。这个原因是很重要,但在实际中其重要性我觉得

  • 一、概述: 在SQLite中,锁和并发控制机制都是由pager_module模块负责处理的,如ACID(Atomic, Consistent, Isolated, and Durable)。在含有数据修改的事务中,该模块将确保或者所有的数据修改全部提交,或者全部回滚。与此同时,该模块还提供了一些磁盘文件的内存Cache功能。 事实上,pager_module模块并不关心数据库存储的细节,如B-Tr

  • 问题内容: 我已经为此工作了几天,已经找到了几种解决方案,但是都没有一个非常简单或轻巧的解决方案。问题基本上是这样的:我们有一个由10台计算机组成的群集,每台计算机都在多线程ESB平台上运行相同的软件。我可以很轻松地处理同一台计算机上线程之间的并发问题,但是不同机器上同一数据上的并发又如何呢? 本质上,该软件接收请求,以通过Web服务将客户数据从一家公司传送到另一家公司。但是,客户可能存在或可能不

  • 目标 建立一个 lesson5 项目,在其中编写代码。 代码的入口是 app.js,当调用 node app.js 时,它会输出 CNode(https://cnodejs.org/ ) 社区首页的所有主题的标题,链接和第一条评论,以 json 的格式。 注意:与上节课不同,并发连接数需要控制在 5 个。 输出示例: [ { "title": "【公告】发招聘帖的同学留意一下这里",