我遇到了同样的问题,问题是由于web.xml中的错误配置,在spring上下文中加载了2个sessionRegistry实例,并且
sessionRegistry控制器中引用的bean与spring-
security中引用的bean不同。
修复您的web.xml,确保
DispatcherServlet不会再次加载根
contextConfigLocation示例中存在的Bean
,dispatcherServlet只会加载具有spring mvc相关内容的servlet-context.xml,而root-
context.xml只会导入dao,service,安全配置bean ..
<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring/root-context.xml </param-value> </context-param> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> </init-param>
更新:另一个要检查的问题是,如果您只有
ConcurrentSessionControlAuthenticationStrategy,这不是注册会话,因此我们需要进行
RegisterSessionAuthenticationStrategy如下操作
<bean id="sas" > <constructor-arg> <list> <bean > <constructor-arg ref="sessionRegistry"/> <property name="maximumSessions" value="1" /> <property name="exceptionIfMaximumExceeded" value="true" /> </bean> <bean > </bean> <bean > <constructor-arg ref="sessionRegistry"/> </bean> </list> </constructor-arg> </bean>



