From 82eb4884e5d688142a10a36cb73c8666b2122f30 Mon Sep 17 00:00:00 2001 From: winLsy <18332763730@163.com> Date: Wed, 17 Jan 2018 17:39:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=AC=AC=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=EF=BC=8C=E7=BB=91=E5=AE=9A=EF=BC=8C=E8=A7=A3?= =?UTF-8?q?=E7=BB=91=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boot-starter-security-browser/README.md | 5 ++--- .../boot-starter-security-core/README.md | 5 +++++ .../security/core/social/MsConnectedView.java | 19 +++++++++++++++++++ .../core/social/MsConnectionStatusView.java | 2 +- .../core/social/qq/config/QQAutoConfig.java | 14 ++++++++++++++ .../config/WeChatAutoConfiguration.java | 14 +++++++++++++- 6 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsConnectedView.java diff --git a/boot-starter/boot-starter-security/boot-starter-security-browser/README.md b/boot-starter/boot-starter-security/boot-starter-security-browser/README.md index 5249b2b..9243c62 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-browser/README.md +++ b/boot-starter/boot-starter-security/boot-starter-security-browser/README.md @@ -8,10 +8,9 @@ - `/authentication/require`处理身份认证跳转的接口地址 - 需要注入`userServiceImpl`获取用户详细信息的bean (必须参数) - 需要注入数据源`masterDataSource`用于记住我功能的bean,记住我功能需要在登录的时候传入(必须参数) -### 第三方方登录的配置 +### 第三方方登录的配置 - 使用这个模块的时候需要借助providerSignInUtils.doPostSignUp();方法实现一个接口将用户的注册或绑定信息插入到数据表中,这里的注 -册指的是创建本系统自己的用户体系,第三方的用户体系springSocial会自动帮助我们创建。并将url -配置可以直接访问 +册指的是创建本系统自己的用户体系,第三方的用户体系springSocial会自动帮助我们创建。并将url配置可以直接访问 - 第三方登陆时,当用户不存在的时候,如果想要系统自动注册一个用户,不进行跳转的话。声明一个类似于demo项目中DemoConnectionSignUp 样的组件进行自己用户体系的注册。这里的注册指的是创建本系统自己的用户体系,第三方的用户体系springSocial会自动帮助我们创建。授权后 直接跳转到域名首页 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 c04e887..2f143ae 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 @@ -34,3 +34,8 @@ weChat 第三方登录 - `ms.security.social.weChat.appId` 类比qq登录 - `ms.security.social.weChat.appSecret` 类比qq登录 - `ms.security.social.weChat.providerId` 类比qq登录 +绑定,解绑第三方用户 +- 查询已绑定的用户,请求`/connect`接口即可,要求当前登录的用户放入session中的是SocialUser的对象,能获取到getId +- 绑定用户就是发起post请求`/connect/providerId`即可.可以使用自定义名称为`qqConnectedView`或`weChatConnectedView`的bean来自定义视图 +- 解除绑定的时候,发送delete请求`/connect/providerId`删除社交登录的信息即可。返回的视图和绑定的时候使用相同的视图,在视图里面做逻辑判断 + diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsConnectedView.java b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsConnectedView.java new file mode 100644 index 0000000..1f989a0 --- /dev/null +++ b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsConnectedView.java @@ -0,0 +1,19 @@ +package com.micro.fast.security.core.social; + +import org.springframework.web.servlet.view.AbstractView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Map; + +/** + * 拦截请求/connect/providerId返回的/connect/providerId视图的信息,这时候是从微信的页面返回来的。所以要给前台一个页面 + * @author lsy + */ +public class MsConnectedView extends AbstractView{ + @Override + protected void renderMergedOutputModel(Map map, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { + httpServletResponse.setContentType("text/html;charset=UTF-8"); + httpServletResponse.getWriter().write("

绑定成功

"); + } +} diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsConnectionStatusView.java b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsConnectionStatusView.java index 2e75257..d6b148a 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsConnectionStatusView.java +++ b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/MsConnectionStatusView.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.Map; /** - * 定义一个返回给前端第三方账户绑定的视图,拦截请求/connect,返回connect/status视图的信息,并装换成json格式 + * 定义一个返回给前端第三方账户绑定情况的视图,拦截请求/connect返回的/connect/status视图的信息,并装换成json格式 * @author lsy */ @Component("connect/status") diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/qq/config/QQAutoConfig.java b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/qq/config/QQAutoConfig.java index 98a15c3..98904ae 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/qq/config/QQAutoConfig.java +++ b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/qq/config/QQAutoConfig.java @@ -1,13 +1,17 @@ package com.micro.fast.security.core.social.qq.config; import com.micro.fast.security.core.master.SecurityProperties; +import com.micro.fast.security.core.social.MsConnectedView; import com.micro.fast.security.core.social.qq.QQSocialProperties; import com.micro.fast.security.core.social.qq.connet.QQConnectionFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.social.SocialAutoConfigurerAdapter; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.social.connect.ConnectionFactory; +import org.springframework.web.servlet.View; /** * @author lsy @@ -24,4 +28,14 @@ public class QQAutoConfig extends SocialAutoConfigurerAdapter { QQSocialProperties qq = securityProperties.getSocial().getQq(); return new QQConnectionFactory(qq.getProviderId(),qq.getAppId(),qq.getAppSecret()); } + + /** + * 定义绑定成功返回的视图,和返回失败时候的视图 + */ + @Bean({"connect/qqConnected","connect/qqConnect"}) + @ConditionalOnMissingBean(name = "qqConnectedView") + public View qqConnectedView(){ + MsConnectedView msConnectedView = new MsConnectedView(); + return msConnectedView; + } } diff --git a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/wechat/config/WeChatAutoConfiguration.java b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/wechat/config/WeChatAutoConfiguration.java index 7421b8b..d960e13 100644 --- a/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/wechat/config/WeChatAutoConfiguration.java +++ b/boot-starter/boot-starter-security/boot-starter-security-core/src/main/java/com/micro/fast/security/core/social/wechat/config/WeChatAutoConfiguration.java @@ -4,14 +4,17 @@ package com.micro.fast.security.core.social.wechat.config; import com.micro.fast.security.core.master.SecurityProperties; +import com.micro.fast.security.core.social.MsConnectedView; import com.micro.fast.security.core.social.wechat.WeChatSocialProperties; import com.micro.fast.security.core.social.wechat.connet.WeChatConnectionFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.social.SocialAutoConfigurerAdapter; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.social.connect.ConnectionFactory; - +import org.springframework.web.servlet.View; /** @@ -31,4 +34,13 @@ public class WeChatAutoConfiguration extends SocialAutoConfigurerAdapter { return new WeChatConnectionFactory(weChatConfig.getProviderId(), weChatConfig.getAppId(), weChatConfig.getAppSecret()); } + /** + * 定义绑定成功返回的视图,和返回失败时候的视图 + */ + @Bean({"connect/weChatConnected","connect/weChatConnect"}) + @ConditionalOnMissingBean(name = "weChatConnectedView") + public View weChatConnectedView(){ + MsConnectedView msConnectedView = new MsConnectedView(); + return msConnectedView; + } }