From 462a4de3a6a07674c79ec2dca21a2766da03ceee Mon Sep 17 00:00:00 2001 From: winLsy <18332763730@163.com> Date: Tue, 16 Jan 2018 17:14:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E7=AC=AC=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E7=99=BB=E5=BD=95=E7=9A=84=E8=BF=87=E6=BB=A4=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boot-starter-security-core/README.md | 4 ++- .../core/social/MsSpringSocialConfigurer.java | 34 +++++++++++++++++++ .../security/core/social/SocialConfig.java | 7 +++- .../core/social/SocialProperties.java | 10 ++++++ 4 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsSpringSocialConfigurer.java diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/README.md b/boot-starter/boot-starter-security/boot-starter-security-core/README.md index 0544278..db0bed5 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-core/README.md +++ b/boot-starter/boot-starter-security/boot-starter-security-core/README.md @@ -26,5 +26,7 @@ ### 本项目提供的第三方登录的配置 - `ms.security.social.qq.appId` qq互联注册的id - `ms.security.social.qq.appSecret` qq互联注册的密码 -- `ms.security.social.qq.providerId` 第三方登录的标识,例如qq登录为`qq` +- `ms.security.social.qq.providerId` 第三方登录的标识,例如qq为`qq`登陆默认 +- `ms.security.social.qq.filterProcessUrl` 进行第三方登录处理的基础url前缀,这个前缀会和providerId进行拼接来进行明确 +的第三方登录 diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsSpringSocialConfigurer.java b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsSpringSocialConfigurer.java new file mode 100644 index 0000000..9222592 --- /dev/null +++ b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsSpringSocialConfigurer.java @@ -0,0 +1,34 @@ +package com.micro.fast.security.core.social; + +import org.springframework.social.security.SocialAuthenticationFilter; +import org.springframework.social.security.SpringSocialConfigurer; + +/** + * 自定义springSocial配置类,这个bean在SocialConfig中声明 + * @author lsy + */ +public class MsSpringSocialConfigurer extends SpringSocialConfigurer{ + + /** + * 第三方登录的url + */ + private String filterProcessUrl; + + public MsSpringSocialConfigurer(String filterProcessUrl) { + this.filterProcessUrl = filterProcessUrl; + } + + /** + * 对第三方登录的拦截器进行自定义设置 + * @param object + * @param + * @return + */ + @Override + protected T postProcess(T object) { + SocialAuthenticationFilter filter = (SocialAuthenticationFilter) super.postProcess(object); + //设置第三方登录的url + filter.setFilterProcessesUrl(this.filterProcessUrl); + return (T) filter; + } +} diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialConfig.java b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialConfig.java index b5e1075..4530b4b 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialConfig.java +++ b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialConfig.java @@ -1,5 +1,6 @@ package com.micro.fast.security.core.social; +import com.micro.fast.security.core.master.SecurityProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; @@ -28,6 +29,9 @@ public class SocialConfig extends SocialConfigurerAdapter{ @Qualifier("dynamicDataSource") private DataSource dataSource; + @Autowired + private SecurityProperties securityProperties; + /** * * @param connectionFactoryLocator @@ -43,6 +47,7 @@ public class SocialConfig extends SocialConfigurerAdapter{ } @Bean public SpringSocialConfigurer springSocialConfigurer(){ - return new SpringSocialConfigurer(); + SocialProperties social = securityProperties.getSocial(); + return new MsSpringSocialConfigurer(social.getFilterProcessUrl()); } } diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialProperties.java b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialProperties.java index 24d33b6..f994a08 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialProperties.java +++ b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/SocialProperties.java @@ -9,6 +9,8 @@ import com.micro.fast.security.core.social.qq.QQSocialProperties; public class SocialProperties { private QQSocialProperties qq = new QQSocialProperties(); + private String filterProcessUrl = "/auth"; + public QQSocialProperties getQq() { return qq; } @@ -16,4 +18,12 @@ public class SocialProperties { public void setQq(QQSocialProperties qq) { this.qq = qq; } + + public String getFilterProcessUrl() { + return filterProcessUrl; + } + + public void setFilterProcessUrl(String filterProcessUrl) { + this.filterProcessUrl = filterProcessUrl; + } }