我最近在我当前的春季项目中完成了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而失败(如果我对此行进行注释,应用程序已正确部署并且运行没有问题,除非在登录后返回到登录页面。)
任何人都知道如何解决这个问题?
答案 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;
}
}