2

Я использую имя пользователя для входа в весну. Теперь я пытаюсь добавить весенний социальный вход в facebook, но я получаю много информации об ошибках.Весна социальная NoSuchMethodError SocialAuthenticationFilter.getFilterProcessesUrl()

Во-первых, когда я пытаюсь использовать тот же метод, как spring social guide, я не @Autowired private Facebook facebook

может я нашел решение

@Bean 
@Scope(value = "request", proxyMode = ScopedProxyMode.INTERFACES) 
public Facebook facebook(ConnectionRepository repository) { 
    Connection<Facebook> connection = repository 
      .findPrimaryConnection(Facebook.class); 
    return connection != null ? connection.getApi() : null; 
} 

Далее, я получаю ошибку «не удается найти компонент». Я должен добавить:

@Bean 
public ConnectionRepository connectionRepository() { 
Authentication authentication = SecurityContextHolder.getContext() 
.getAuthentication(); 
if (authentication == null) { 
throw new IllegalStateException(
"Unable to get a ConnectionRepository: no user signed in"); 
} 
return usersConnectionRepository().createConnectionRepository(
authentication.getName()); 
} 

@Bean 
public ConnectionFactoryLocator connectionFactoryLocator() { 
    ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry(); 

    registry.addConnectionFactory(new FacebookConnectionFactory(facebookid, 
       facebookSecure)); 

    return registry; 
} 

@Bean 
public AuthenticationNameUserIdSource authenticationNameUserIdSource(){ 
    return new AuthenticationNameUserIdSource(); 
} 


@Bean 
public ConnectController connectController(
     ConnectionFactoryLocator connectionFactoryLocator, 
     ConnectionRepository connectionRepository) { 
    return new ConnectController(connectionFactoryLocator, 
      connectionRepository); 
} 

@Bean 
public UsersConnectionRepository usersConnectionRepository() { 
    return new JdbcUsersConnectionRepository(dataSource, 
      connectionFactoryLocator(), Encryptors.noOpText()); 
} 

После этого, у меня есть другой вопрос, java.lang.NoSuchMethodError: org.springframework.social.security.SocialAuthenticationFilter.getFilterProcessesUrl()Ljava/lang/String;

@Bean 
    public SocialAuthenticationServiceLocator socialAuthenticationServiceLocator() { 
    SocialAuthenticationServiceRegistry registry = new SocialAuthenticationServiceRegistry(); 
    registry.addConnectionFactory(new FacebookConnectionFactory(facebookid, 
      facebookSecure)); 
    return registry; 
} 

    @Bean 
public SocialAuthenticationFilter socialAuthenticationFilter() 
throws Exception { 
SocialAuthenticationFilter filter = new SocialAuthenticationFilter(
authenticationManager(), authenticationNameUserIdSource(), 
usersConnectionRepository(), socialAuthenticationServiceLocator()); 
filter.setFilterProcessesUrl("/login"); 
filter.setSignupUrl("/signup"); 
filter.setConnectionAddedRedirectUrl("/home"); 
filter.setPostLoginUrl("/home"); // always open account profile 
// page after login 
// filter.setRememberMeServices(rememberMeServices()); 
return filter; 
} 

но всегда одно и то же.

Это моя конфигурация HTTP

 http.csrf() 
      .disable() 
      .authorizeRequests() 
      .antMatchers("/home", "/css/**", "/**/*.css*", "/", "/signup", 
        "/facebook", "/signup.xhtml").permitAll().anyRequest() 
       .authenticated().and().formLogin().loginPage("/login").loginProcessingUrl("/login/authenticate") 
      .defaultSuccessUrl("/home").failureUrl("/login") 

      .permitAll().and().logout().logoutUrl("/logout") 
      .invalidateHttpSession(true).logoutSuccessUrl("/").and() 
      .apply(new SpringSocialConfigurer()); 

И контроллер

@RequestMapping(value = "/login", method = RequestMethod.GET) 
public String loginPage() { 
return "redirect:/login/authenticate/connect/facebook"; 

} 

Я сделал целую tutorial. Затем я удалил SocialConfigurer и создал тот же (не @Override, только @Bean) social documentation.

«Обычный вход» (весенняя безопасность) отлично работает, но я не могу настроить весеннюю социальную систему с весной. Я использую файлы JSF и .XHTML.

Возможно, кто-то знает, где я делаю ошибки?

Благодарим за помощь.

+0

Вероятно, конфликт версии. Какие версии вы используете? – holmis83

+0

facebook social Я использую ' 1.1.1.RELEASE', но в применении я использую '@ EnableAutoConfiguration', может быть, это проблема – luprogrammer

ответ

0

Как указано в моем комментарии, у вас неправильная версия некоторой библиотеки. Моя разумная догадка заключается в том, что версия Spring Security неверна. Из того, что я могу найти, вы должны использовать версию в серии 3.2.x (например, 3.2.5) Spring Security.

+0

Это все мое [pom.xml] (http://wklej.to/Ndp1t) – luprogrammer

+0

@luprogrammer Неверная версия Spring Security, понимаете? Измените '4.0.0.CI-SNAPSHOT' на' 3.2.5'. – holmis83

+0

Когда я перехожу к '4.0.0.RC1', у меня такая же проблема, но теперь я использую' @ EnableSocial', после чего я могу перенаправить на логин facebook, но теперь у меня есть другая проблема [anonymusUser] (http: // stackoverflow.com/questions/28236063/spring-social-facebook-login-inserts-anonymoususer-in-database/28245733#28245733) – luprogrammer

1

Похоже, что Spring Security удалена getFilterProcessesUrl() в Spring Security 4.0.0.RC1 (в любом случае она была отмечена как устаревшая).

Похоже, что другие фильтры проекта не были обновлены?

Попробуйте откат до 4.0.0.M2 или используйте поезд 3.2.

1

Обратите внимание, что весенняя безопасность 4 не примет весенний социальный 1.1.0. Обновите все весенние социальные зависимости (config, core, security и web) до 1.1.2.RELEASE. Вы можете оставить свой весенний социальный Facebook до 1.1.0

0

Рассмотрите возможность использования версии 1.1.4.

это решено в весенне-социальном обеспечении 1.1.4.RELEASE (или, возможно, в некоторых версиях ранее).

https://github.com/spring-projects/spring-social