尝试在ProviderSignInController中定义目标URL时出现NullPointerException

时间:2014-10-20 10:42:33

标签: spring spring-mvc spring-social

我最近在我当前的春季项目中完成了spring-social的实现,但是我有一个独特的问题仍然困扰着我:在我的SocialContext类(实现SocialConfigurer)中,我尝试为应用程序的位置定义目标url以这种方式追踪登录:

@Bean
public ProviderSignInController providerSignInController(ConnectionFactoryLocator connectionFactoryLocator, UsersConnectionRepository connectionRepository) {
    ProviderSignInController controller = new ProviderSignInController(connectionFactoryLocator, connectionRepository, signInAdapter);
    controller.setApplicationUrl("/");
    return controller;
}

但是当我部署应用程序时,由于行controller.setApplicationUrl("/");导致NullPOinterException而失败(如果我对此行进行注释,应用程序已正确部署并且运行没有问题,除非在登录后返回到登录页面。)

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

This thread似乎涵盖了类似的问题。基本上,如果您使用注释来配置Spring和安全性,您可以尝试类似这样的

@Configuration
@EnableWebSecurity
public class SecurityContext extends WebSecurityConfigurerAdapter {
    ...

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .formLogin()
            .loginPage("/signin")
            ...
            // the rest of the configuration
            ...
            .and()
            .rememberMe()
            .and()
            .apply(getSpringSocialConfigurer());
    }

    private SpringSocialConfigurer getSpringSocialConfigurer() {
        SpringSocialConfigurer config = new SpringSocialConfigurer();
        config.alwaysUsePostLoginUrl(true);
        config.postLoginUrl("/");

        return config;
    }
}