春季登录社交帐户

时间:2014-10-17 09:40:52

标签: spring spring-social

在Spring社交中,是否可以允许用户使用他的社交帐户登录应用程序?

我认为只有登录用户可以将他们的帐户连接到社交帐户,如果有用户没有在应用程序中注册并且我们想让他登录应用程序,那是不可能的,因为当我们创建connectionRepository然后我们必须通过用户ID。

1 个答案:

答案 0 :(得分:3)

您需要的是定义

@Bean(name="connectionFactoryLocator")
public ConnectionFactoryLocator connectionFactoryLocator() {
    ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();
    registry.addConnectionFactory(new FacebookConnectionFactory(facebookId,facebookSecret));
    return registry;
}

@Bean
public UsersConnectionRepository socialConnectionRepository() {
    return new SocialConnectionRepository(dataSource, userRepository, connectionFactoryLocator());
}

其中,用户存储库是例如spring data jpa存储库,用于读取/写入db中的users表。

然后你可以使用spring-social提供的控制器(如果使用默认conf,则不需要定义为bean)

  @Bean
  public ProviderSignInController providerSignInController() {
    ProviderSignInController providerSignInController = new ProviderSignInController(connectionFactoryLocator(), socialConnectionRepository(),
            new SimpleSignInAdapter());
    providerSignInController.setSignInUrl("/");
    providerSignInController.setSignUpUrl("/");
    return providerSignInController;
}

查看您必须在哪些路径上发布您的用户名/密码(默认情况下为/ signin / facebook)

如果您需要通过Spring安全性登录用户或使用fb中的信息执行特殊操作,则必须定义适配器:

private class SimpleSignInAdapter implements SignInAdapter {
    public String signIn(String userId, Connection<?> connection, NativeWebRequest request) {
      ...
    }
}