查询第三方绑定,绑定,解绑功能开发

This commit is contained in:
winLsy
2018-01-17 17:39:03 +08:00
parent e917427314
commit 82eb4884e5
6 changed files with 54 additions and 5 deletions
@@ -8,10 +8,9 @@
- `/authentication/require`处理身份认证跳转的接口地址
- 需要注入`userServiceImpl`获取用户详细信息的bean (必须参数)
- 需要注入数据源`masterDataSource`用于记住我功能的bean,记住我功能需要在登录的时候传入(必须参数)
### 第三方方登录的配置
### 第三方方登录的配置
- 使用这个模块的时候需要借助providerSignInUtils.doPostSignUp();方法实现一个接口将用户的注册或绑定信息插入到数据表中,这里的注
册指的是创建本系统自己的用户体系,第三方的用户体系springSocial会自动帮助我们创建。并将url
配置可以直接访问
册指的是创建本系统自己的用户体系,第三方的用户体系springSocial会自动帮助我们创建。并将url配置可以直接访问
- 第三方登陆时,当用户不存在的时候,如果想要系统自动注册一个用户,不进行跳转的话。声明一个类似于demo项目中DemoConnectionSignUp
样的组件进行自己用户体系的注册。这里的注册指的是创建本系统自己的用户体系,第三方的用户体系springSocial会自动帮助我们创建。授权后
直接跳转到域名首页
@@ -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`删除社交登录的信息即可。返回的视图和绑定的时候使用相同的视图,在视图里面做逻辑判断
@@ -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<String, Object> map, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
httpServletResponse.setContentType("text/html;charset=UTF-8");
httpServletResponse.getWriter().write("<h3>绑定成功</h3>");
}
}
@@ -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")
@@ -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;
}
}
@@ -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;
}
}