java ProviderSignNutils。getConnectionFromSession(请求)提供空异常
当我单击lick /auth/facebook?...
以获取重定向到注册页面时,控制器使用Connection<?> connection = providerSignInUtils.getConnectionFromSession(request);
获取用户信息。然而,在这一行代码中,它给了我一个空异常
WebRequest有什么问题吗
另外,我可以用ajax完成注册过程吗
控制器方法:
@RequestMapping(value = "/facebookRegister", method = RequestMethod.GET)
public String facebookRegister(Model model, WebRequest request){
Connection<?> connection = providerSignInUtils.getConnectionFromSession(request);
model.addAttribute(UserRegisterModel.fromConnection(connection));
return "test/facebook";
}
我的spring安全配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.exceptionHandling().authenticationEntryPoint(customAuthenticationEntryPoint())
.and()
.authorizeRequests()
.antMatchers("/mngt/**").hasAuthority("UPDATE_USER_MANAGEMENT")
.and()
.logout().logoutUrl("/logout").logoutSuccessHandler(securityLogoutSuccessHandler()).deleteCookies("JSESSIONID").invalidateHttpSession(true)
.and()
.exceptionHandling().accessDeniedPage("/denied")
.and()
.csrf()
.and()
.rememberMe().key("remember-me").rememberMeServices(persistentTokenBasedRememberMeServices()).tokenValiditySeconds(1209600)
.and().apply(new SpringSocialConfigurer().signupUrl("/user/facebookRegister"));
http.addFilterBefore(usernamePasswordAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
http.addFilterAfter(rememberMeAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
}
我的春季社交配置:
@Configuration
@EnableSocial
@PropertySource("classpath:social.properties")
public class SocialConfig extends SocialConfigurerAdapter {
@Autowired
private DataSource dataSource;
@Autowired
private Environment env;
@Override
public void addConnectionFactories(ConnectionFactoryConfigurer cfConfig, Environment env) {
FacebookConnectionFactory facebookConnectionFactory = new FacebookConnectionFactory(
this.env.getProperty("facebook.clientId"),
this.env.getProperty("facebook.clientSecret"));
cfConfig.addConnectionFactory(facebookConnectionFactory);
}
@Override
public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator connectionFactoryLocator) {
return new JdbcUsersConnectionRepository (
dataSource,
connectionFactoryLocator,
Encryptors.noOpText()
);
}
@Bean
public ProviderSignInUtils providerSignInUtils(ConnectionFactoryLocator connectionFactoryLocator, UsersConnectionRepository connectionRepository) {
System.out.println("connectionFactoryLocator: " + (connectionFactoryLocator.registeredProviderIds().toString()) + " connectionRepository: " + (connectionRepository.toString()));
return new ProviderSignInUtils(connectionFactoryLocator, connectionRepository);
};
@Override
public UserIdSource getUserIdSource() {
return new AuthenticationNameUserIdSource();
}
}
共 (0) 个答案