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; + } }