我正在尝试扩展ConcurrentSessionControlAuthenticationStrategy
的Spring MVC类,并用我自己的实现覆盖getMaximumSessionsForThisUser
方法。
如何注册或与Spring交流以使用其方法的实现而不是其自身的实现?
答案 0 :(得分:2)
有关XML配置,请参见Spring Security Reference:
21.2 SessionAuthenticationStrategy
SessionAuthenticationStrategy
由SessionManagementFilter
和AbstractAuthenticationProcessingFilter
共同使用,因此,例如,如果您使用定制的表单登录类,则需要将其注入这两个类中。在这种情况下,将名称空间和自定义bean相结合的典型配置如下所示:<http> <custom-filter position="FORM_LOGIN_FILTER" ref="myAuthFilter" /> <session-management session-authentication-strategy-ref="sas"/> </http> <beans:bean id="myAuthFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter"> <beans:property name="sessionAuthenticationStrategy" ref="sas" /> ... </beans:bean> <beans:bean id="sas" class="org.springframework.security.web.authentication.session.SessionFixationProtectionStrategy" />
有关Java配置,请参见SessionManagementConfigurer#sessionAuthenticationStrategy
:
public SessionManagementConfigurer<H> sessionAuthenticationStrategy(SessionAuthenticationStrategy sessionAuthenticationStrategy)
允许显式指定
SessionAuthenticationStrategy
。默认为使用SessionFixationProtectionStrategy
。如果配置了限制最大会话数,则CompositeSessionAuthenticationStrategy
委派给ConcurrentSessionControlAuthenticationStrategy
,SessionFixationProtectionStrategy
(默认值)或SessionAuthenticationStrategy
所提供的sessionAuthenticationStrategyRegisterSessionAuthenticationStrategy
。注意:提供自定义SessionAuthenticationStrategy
将覆盖提供的默认SessionFixationProtectionStrategy
。