在Spring社交中,是否可以允许用户使用他的社交帐户登录应用程序?
我认为只有登录用户可以将他们的帐户连接到社交帐户,如果有用户没有在应用程序中注册并且我们想让他登录应用程序,那是不可能的,因为当我们创建connectionRepository然后我们必须通过用户ID。
答案 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) {
...
}
}