这两天刚好在做这个三方的登录问题。具体需求如下(A表示自己的系统,B表示三方系统):

  1. 需要使用B平台账号登录A平台
  2. A平台可以使用自己的账号登录A平台
  3. A平台只能通过B平台的验证接口来验证B平台的账号是否合规。
  4. 使用场景是在B平台中。

很典型的三方账号登录方式,不过由于都是内部登录,所以并没有搭建完善的三方登录系统。
比较符合常规的方式是与B前端做关联,在A后端验证后返回B前端验证结果与生成的通行码,随后按照一般访问流程继续。
不过由于A前端是通过A后端接口权限的方式做的访问跳转,所以可以采用以下设计:

  1. A平台提供三方登录接口,登录时需要将B平台账号的三方验证信息传递进来。
  2. 使用B平台的登录验证接口,将B平台验证成功后的账号转换成A平台的账号。这里由于是临时登录,并不需要创建账号,所以将创建的A平台账号交由登录缓存处理,不添加至数据库(没有这个需求)。
  3. 登录缓存数据以将登录IP作为缓存关键字,便于短时间免登录验证。
  4. 在请求响应数据中,添加重定向,指向跳转到的A平台页面,这样就能实现无缝访问。

这样做可以只修改A后端,不改动B前端,减少对接工作量。
不过这样的设计有一个很大的弊端,就是当B平台账号退出或是其他原因无法使用,但A平台的登录缓存未失效时,此IP依旧可以访问A平台
目前比较简单的解决方式是轮询或是关键接口单独验证。


本站总访问量