Skip to content

社交登录(forge-starter-social)

基于 JustAuth 的第三方社交登录模块,支持微信、钉钉、GitHub、Gitee 等 18+ 平台。

快速开始

1. 引入依赖

xml
<dependency>
    <groupId>com.mdframe.forge</groupId>
    <artifactId>forge-starter-social</artifactId>
</dependency>

2. 配置

yaml
forge:
  social:
    enabled: true
    callbackPrefix: ""
    autoRegister: true      # 首次登录自动注册用户
    defaultRoleIds: [0]     # 新用户默认角色 ID

3. 在数据库中配置社交平台

sys_social_config 表中添加平台配置(clientId、clientSecret、redirectUri 等)。

支持的平台

平台Code说明
微信开放平台WECHAT_OPEN网站微信扫码登录
微信公众号WECHAT微信公众号授权
微信小程序WECHAT_MINI微信小程序登录
钉钉DINGTALK钉钉扫码登录
企业微信WECHAT_ENTERPRISE企业微信授权
飞书FEISHU飞书授权登录
GitHubGITHUBGitHub OAuth
GiteeGITEEGitee OAuth
QQQQQQ 互联
微博WEIBO微博 OAuth
支付宝ALIPAY支付宝授权
百度BAIDU百度 OAuth
GoogleGOOGLEGoogle OAuth
FacebookFACEBOOKFacebook OAuth
TwitterTWITTERTwitter OAuth
小米XIAOMI小米 OAuth
华为HUAWEI华为 OAuth
自定义CUSTOM自定义平台

核心功能

社交登录流程

用户扫码/授权 → 跳转到回调地址 → SocialController 处理回调
  → 调用 JustAuth 获取用户信息 → 查找/创建本地用户
  → 绑定社交账号 → 登录成功

数据库表

表名说明
sys_user_social用户社交账号绑定关系表
sys_social_config社交平台配置表(clientId、clientSecret 等)

SysUserSocial 实体

字段说明
userId本地用户 ID
platform社交平台(SocialPlatform 枚举)
uuid第三方平台用户唯一标识
username第三方用户名
nickname第三方用户昵称
avatar第三方用户头像
email第三方用户邮箱
accessToken访问令牌
refreshToken刷新令牌
expireTimeToken 过期时间
bindTime绑定时间

REST API

方法路径说明
GET/social/auth/{platform}发起社交登录,返回授权 URL
GET/social/callback/{platform}第三方回调处理
GET/social/bindings获取当前用户的社交账号绑定列表
POST/social/bind绑定社交账号
DELETE/social/unbind/{platform}解绑社交账号
GET/social/config获取社交平台配置列表
PUT/social/config更新社交平台配置

动态配置

社交平台配置存储在数据库中,支持 @RefreshScope 动态刷新,无需重启服务。

核心组件

组件说明
SocialAuthRequestFactory根据平台创建 AuthRequest(JustAuth)
ISocialUserService社交用户服务接口
SocialUserServiceImpl社交用户服务实现
SocialController社交登录 REST 接口
SocialConfigController社交平台配置管理接口
SocialPlatform平台枚举类
SysSocialConfig平台配置实体
SysUserSocial用户社交绑定关系实体