WeBankBlockchain / DDCMS-Service

Apache License 2.0
3 stars 5 forks source link

Task5 实现DDCMS的第三方登录功能(后端) #6

Closed ashinnotfound closed 10 months ago

ashinnotfound commented 1 year ago

Task5 实现DDCMS的第三方登录功能(后端)

陈汛

广东工业大学

概述

实现了用户使用第三方账号登录和绑定第三方账号的功能(目前github测试通过), 以及提供了支持其他第三方账号的能力

配置说明

// application.yml
third-party:
  githubClientId: 
  githubClientSecret: 

为新增配置项,通过创建github应用获取

主要实现功能

  1. 使用第三方账号登录

    逻辑:根据request的第三方账号类型通过反射调用对应方法获取第三方账号id,查表判断是否存在有对应id的记录,有则查询具体用户信息、填充权限、生成token;无则登陆失败(说明该第三方账号未绑定任何账号)

  2. 绑定第三方账号

    逻辑:根据request的第三方账号类型通过反射调用对应方法获取第三方账号id,查表判断是否存在有对应id的记录,有则说明该第三方账号已被绑定过,终止业务,返回错误response;无则进行表的更新

重要代码改动

其他

鉴于大多数第三方应用授权都是采用携带回调code的方式, 因此后端代码的实现使用了反射的方法, 理论上适配所有此类型的第三方账号接入登录。以微信为例, 只需要新增枚举类com.webank.ddcms.enums.ThirdPartyType属性、添加相应的表字段、增加对应clientId和ClientSecret的配置以及在com/webank/ddcms/utils/ThirdPartyUtils中编写针对性的获取微信账户信息方法即可