从Spring 2迁移到Spring 4后,在SecurityContext中找不到身份验证对象

时间:2018-07-25 11:25:32

标签: java xml spring spring-security security-context

我正在将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配置。

0 个答案:

没有答案