
top.dcenter.ums.security.social.provider.weibo.config.WeiboAutoConfiguration Maven / Gradle / Ivy
package top.dcenter.ums.security.social.provider.weibo.config;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.security.crypto.encrypt.TextEncryptor;
import org.springframework.social.config.annotation.ConnectionFactoryConfigurer;
import org.springframework.social.connect.ConnectionFactory;
import org.springframework.social.connect.ConnectionSignUp;
import top.dcenter.ums.security.social.api.banding.ShowConnectViewService;
import top.dcenter.ums.security.social.api.config.BaseSocialConfigurerAdapter;
import top.dcenter.ums.security.social.api.repository.UsersConnectionRepositoryFactory;
import top.dcenter.ums.security.social.config.SocialAutoConfiguration;
import top.dcenter.ums.security.social.controller.BandingConnectController;
import top.dcenter.ums.security.social.properties.SocialProperties;
import top.dcenter.ums.security.social.provider.weibo.connect.WeiboConnectionFactory;
import top.dcenter.ums.security.social.view.ConnectView;
import javax.sql.DataSource;
/**
* weibo 第三方登录自动配置,根据用户是否填写来判断是否开启 Weibo 登录功能
* SocialAutoConfigurerAdapter 适用于 spring boot 1.5.x,
* SocialConfigurerAdapter 适用于 spring boot 2.x
* @author zyw
* @version V1.0 Created by 2020/6/18 23:36
*/
@Configuration
@AutoConfigureAfter({SocialAutoConfiguration.class})
@ConditionalOnProperty(prefix = "ums.social.weibo", name = "enable", havingValue = "true")
public class WeiboAutoConfiguration extends BaseSocialConfigurerAdapter implements InitializingBean {
@SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection")
@Autowired
private GenericApplicationContext applicationContext;
public WeiboAutoConfiguration(SocialProperties socialProperties,
ConnectionSignUp connectionSignUp,
DataSource dataSource,
UsersConnectionRepositoryFactory usersConnectionRepositoryFactory,
@Qualifier("socialTextEncryptor") TextEncryptor socialTextEncryptor) {
super(socialProperties, connectionSignUp, dataSource, usersConnectionRepositoryFactory, socialTextEncryptor);
}
@Bean("weibo")
public ConnectionFactory> weiboConnectionFactory() {
SocialProperties.WeiboProperties weibo = this.socialProperties.getWeibo();
return new WeiboConnectionFactory(weibo.getAppId(), weibo.getAppSecret(), this.objectMapper,
this.socialProperties);
}
@Override
public void addConnectionFactories(ConnectionFactoryConfigurer connectionFactoryConfigurer, Environment environment) {
connectionFactoryConfigurer.addConnectionFactory(weiboConnectionFactory());
}
@Override
public void afterPropertiesSet() throws Exception {
// ====== 注册 ConnectView, qq 绑定与解绑后回显的页面======
ConfigurableListableBeanFactory beanFactory = applicationContext.getBeanFactory();
// 获取 ShowConnectionStatusViewService bean
ShowConnectViewService showConnectViewService =
applicationContext.getBean(ShowConnectViewService.class);
// 注册 ConnectView 到 IOC 容器
String providerId = socialProperties.getWeibo().getProviderId();
String viewPath = socialProperties.getViewPath();
String connectViewBeanName = viewPath + providerId + BandingConnectController.BIND_SUFFIX;
beanFactory.registerSingleton(connectViewBeanName,
new ConnectView(showConnectViewService));
beanFactory.registerAlias(connectViewBeanName, viewPath + providerId + BandingConnectController.UNBIND_SUFFIX);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy