2014-06-26 11 views
5

Ich muss die Umleitung URL ändern, wenn mein Benutzer ist erfolgreich eingeloggt mit einigen von Spring Social Provider, wie Twitter in diesem Fall.Wie Redirect URL nach erfolgreicher Anmeldung mit Social Provider

Ich bin in jedem Satz immer *** URL ("") ein Null-Zeiger Ausnahme Einige Male Einstellung dieser Arbeit nicht zu

ich bisher versucht Einstellung:

public ProviderSignInController signInController(ConnectionFactoryLocator connectionFactoryLocator, 
                UsersConnectionRepository usersConnectionRepository) { 
     ProviderSignInController providerSignInController = new ProviderSignInController(connectionFactoryLocator, 
       usersConnectionRepository, 
       new CSignInAdapter(requestCache())); 
     providerSignInController.setPostSignInUrl("/home"); 
     providerSignInController.setApplicationUrl("localhost:8080/home"); 
     return providerSignInController; 
    } 

Ich probierte jede von setPostSignInUrl und setApplicationUrl separat.

auch versucht:

@Bean 
    public ConnectController connectController(ConnectionFactoryLocator connectionFactoryLocator, 
               ConnectionRepository connectionRepository) { 
     ConnectController connectController = new ConnectController(connectionFactoryLocator, connectionRepository); 
     connectController.addInterceptor(new TweetAfterConnectInterceptor()); 
     connectController.setApplicationUrl("/home"); 
     return connectController; 
    } 

Ich bin mit Sicherheit als Basis Frühling Sozialschaufenster mit, dies zu tun. Notfalls Ich poste die HttpSecurity Konfiguration:

@Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
       .formLogin() 
       .loginPage("/signin") 
       .loginProcessingUrl("/signin/authenticate") 
       .failureUrl("/signin?param.error=bad_credentials") 
       .defaultSuccessUrl("/home") 
       .and() 
       .csrf() 
       .and() 
       .logout() 
       .logoutUrl("/signout") 
       .deleteCookies("JSESSIONID") 
       .and() 
       .authorizeRequests() 
       .antMatchers("/admin/**", "/favicon.ico", "/resources/**", "/auth/**", "/signin/**", "/signup/**", 
         "/disconnect/facebook").permitAll() 
       .antMatchers("/**").authenticated() 
       .and() 
       .rememberMe() 
       .and() 
       .apply(new SpringSocialConfigurer()); 
    } 

Antwort

4

Versuchen Sie folgendes:

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

     return config; 
} 

dann Ihre configure Methode ändern:

.apply(getSpringSocialConfigurer()); 
+0

Hallo Leute, ich habe hier Zweifel. Ich werde eine dynamische URL erhalten. wie this.config.postLoginUrl ("/ event? eventid = 4"). Diese Ereignis-ID wird sich dynamisch ändern. ist es möglich? –

+0

bitte erläutern Sie mich oben Frage. wenn du Zeit hast. –

0

für Frühling Social können Sie konfigurieren, die Post-Login-URL zu einer Standard-URL, z. B. "/ home".

Aber unter bestimmten Umständen möchten Sie den Benutzer auf eine andere URL verweisen. Um nach erfolgreicher Anmeldung, um dynamisch die Umleitungs-URL zu ändern, können Sie einfach einen String zurückgeben jede URL darstellt Sie in der Signin Methode Ihrer SignInAdapter Implementierungsklasse wünschen:

import org.springframework.social.connect.web.SignInAdapter; 

public class SocialSignInAdapter implements SignInAdapter { 

    public String signIn(String localUserId, Connection<?> connection, NativeWebRequest request) { 
     boolean flag = true; 
     if (flag) {   
      return "/a_different_url"; 
     } 
     return null; // Default, which means using the default post login URL 
    } 
} 

ich überprüft diese mit Spring Social Version 1.1.0 .RELEASE

Verwandte Themen