2015-05-02 43 views
1

我使用Spring Boot Social通過SpringSocialConfigurer進行OAuth身份驗證,並且所有與第三方OAuth提供者進行的OAuth身份驗證均通過/auth/providerId路徑。Spring Boot Social disable ConnectController

一切工作正常,但我注意到,ConnectController也呈現在我的應用程序配置:

2015-05-02 12:02:47 [main] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/connect/{providerId}],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.view.RedirectView org.springframework.social.connect.web.ConnectController.connect(java.lang.String,org.springframework.web.context.request.NativeWebRequest) 
2015-05-02 12:02:47 [main] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/connect/{providerId}],methods=[GET],params=[error],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.view.RedirectView org.springframework.social.connect.web.ConnectController.oauth2ErrorCallback(java.lang.String,java.lang.String,java.lang.String,java.lang.String,org.springframework.web.context.request.NativeWebRequest) 
2015-05-02 12:02:47 [main] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/connect/{providerId}],methods=[DELETE],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.view.RedirectView org.springframework.social.connect.web.ConnectController.removeConnections(java.lang.String,org.springframework.web.context.request.NativeWebRequest) 
2015-05-02 12:02:47 [main] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/connect],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String org.springframework.social.connect.web.ConnectController.connectionStatus(org.springframework.web.context.request.NativeWebRequest,org.springframework.ui.Model) 
2015-05-02 12:02:47 [main] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/connect/{providerId}],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String org.springframework.social.connect.web.ConnectController.connectionStatus(java.lang.String,org.springframework.web.context.request.NativeWebRequest,org.springframework.ui.Model) 
2015-05-02 12:02:47 [main] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/connect/{providerId}],methods=[GET],params=[oauth_token],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.view.RedirectView org.springframework.social.connect.web.ConnectController.oauth1Callback(java.lang.String,org.springframework.web.context.request.NativeWebRequest) 
2015-05-02 12:02:47 [main] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/connect/{providerId}],methods=[GET],params=[code],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.view.RedirectView org.springframework.social.connect.web.ConnectController.oauth2Callback(java.lang.String,org.springframework.web.context.request.NativeWebRequest) 
2015-05-02 12:02:47 [main] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/connect/{providerId}/{providerUserId}],methods=[DELETE],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.view.RedirectView org.springframework.social.connect.web.ConnectController.removeConnection(java.lang.String,java.lang.String,org.springframework.web.context.request.NativeWebRequest) 

我想我不需要ConnectController。有什麼辦法可以禁用它嗎?

更新:

這是我目前SocialConfig

@Configuration 
@EnableSocial 
public class SocialConfig extends SocialConfigurerAdapter { 

    @Autowired 
    private UserService userService; 

    @Autowired 
    private SocialUserService socialUserService; 

    @Autowired 
    private TextEncryptor textEncryptor; 

    @Override 
    public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator connectionFactoryLocator) { 
     Neo4jUsersConnectionRepository connectionRepository = new Neo4jUsersConnectionRepository(userService, socialUserService, 
       (SocialAuthenticationServiceLocator) connectionFactoryLocator, textEncryptor); 
     connectionRepository.setConnectionSignUp(new UserConnectionSignUp(userService)); 
     return connectionRepository; 
    } 

    @Bean 
    public SocialUserDetailsService socialUserDetailsService() { 
     return new DBSocialUserDetailService(userService); 
    } 

} 
+0

你應該簡單地從你的Social上下文配置中移除'ConnectionController' bean。 – Vaelyr

+0

以什麼方式?我沒有手動聲明這個bean? – alexanoid

+0

您需要爲您的配置有一個單獨的社會環境。如果Spring Boot爲你自動執行它,那麼你必須自己定義你確切需要的地方。你不能排除任何東西。 https://github.com/spring-projects/spring-social-samples/blob/77a79c2fcba8102463acbe84457614f89d0648a4/spring-social-showcase/src/main/java/org/springframework/social/showcase/config/SocialConfig.java – Vaelyr

回答

2

添加

@SpringBootApplication(exclude = SocialWebAutoConfiguration.class) 

解決了我。

UPDATE

我需要創建下面的類正常工作。

import org.springframework.context.annotation.Configuration; 
import org.springframework.core.env.Environment; 
import org.springframework.security.core.Authentication; 
import org.springframework.security.core.context.SecurityContextHolder; 
import org.springframework.security.crypto.encrypt.Encryptors; 
import org.springframework.social.UserIdSource; 
import org.springframework.social.config.annotation.ConnectionFactoryConfigurer; 
import org.springframework.social.config.annotation.EnableSocial; 
import org.springframework.social.config.annotation.SocialConfigurer; 
import org.springframework.social.connect.ConnectionFactoryLocator; 
import org.springframework.social.connect.UsersConnectionRepository; 
import org.springframework.social.connect.jdbc.JdbcUsersConnectionRepository; 

import javax.inject.Inject; 
import javax.sql.DataSource; 

@Configuration 
@EnableSocial 
public class MySocialConfig implements SocialConfigurer { 
    @Inject 
    private DataSource dataSource; 

    // 
    // SocialConfigurer implementation methods 
    // 

    @Override 
    public void addConnectionFactories(ConnectionFactoryConfigurer cfConfig, Environment env) { 
    } 

    @Override 
    public UserIdSource getUserIdSource() { 
     return new UserIdSource() { 
      @Override 
      public String getUserId() { 
       Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); 
       if (authentication == null) { 
        throw new IllegalStateException("Unable to get a ConnectionRepository: no user signed in"); 
       } 
       return authentication.getName(); 
      } 
     }; 
    } 

    @Override 
    public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator connectionFactoryLocator) { 
     return new JdbcUsersConnectionRepository(dataSource, connectionFactoryLocator, Encryptors.noOpText()); 
    } 
} 
+0

從您的自動配置中排除的。它不適用於我。 @SpringBootApplication(排除= {SocialWebAutoConfiguration.class,FacebookAutoConfiguration.class}) –

+0

這種方式工作? – Henrique

相關問題