我正在将Spring Security 2.0.7迁移到Spring Security 4.2.0。
这是2.0.7期间xml中的原始代码:
<bean id="authenticationProvider"
class="com.cv.ibs.cib.common.security.provider.CustomerSupportAuthenticationProvider">
<security:custom-authentication-provider />
<security:authentication-provider />
<property name="userProfileService" ref="userProfileService"/>
<property name="encryptor" ref="saltEncryptor"/>
</bean>
因此在春季4,我将其移至Java配置,因为我发现<security:custom-authentication-provider />
已不再受支持。
这是我的Java配置代码:
@Bean(name = "authenticationProvider")
public AuthenticationProvider csAuthenticationProvider() {
CustomerSupportAuthenticationProvider csAuthenticationProvider =
new CustomerSupportAuthenticationProvider();
csAuthenticationProvider.setUserProfileService(userManager);
csAuthenticationProvider.setEncryptor(saltEncryptor);
return csAuthenticationProvider;
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(csAuthenticationProvider());
}
我仍然在xml文件中维护其他配置。我发现其中1个是:
<security:authentication-manager alias="authenticationManager" >
我能够正确启动服务器。
但是,我发现我的CustomerSupportAuthenticationProvider
正在被调用,support()方法未运行。因为support()方法没有运行,所以我的
SecurityContextHolder.getContext( )
.getAuthentication( )
将始终为空。
春天ProviderManger
也不会触发authenticate()
。
因此,我认为我的配置有问题。
如果我的配置在2个地方可以吗?这是xml文件和Java配置。