• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

01. pigx微信小程序登录流程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

01. pigx微信小程序登录流程

pigx配置小程序信息

访问pigx配置小程序信息,在这个页面中我们配置了pigx小程序的appIdappSecret

然后根据文档的说明,会经历以下几个步骤

  1. 小程序端wx.login返回 code 调用 pigx 获取 token。
  2. 若 pigx 返回200 & access_token,小程序端保存access_token,调用服务端API使用
  3. 若 pigx 返回401则未绑定,跳转绑定功能
    1. 使用短信验证码模式登录获取 token
    2. 小程序端再次wx.login获取 code
    3. 调用绑定接口,实现用户&&openid 绑定

pigx流程一览

根据上面的步骤,一共有四个接口会进行调用

  1. 小程序端调用wx.login返回 code,调用http://pigx.com/auth/mobile/token/social?grant_type=mobile&mobile=MINI@{微信返回的code}获取 token
  2. 如果手机号和 openid 进行过绑定,则可以正常获取到 token,然后用户就能用token来做后续的事情了。如果手机号和 openid 没有绑定过,则调用http://pigx.com/admin/mobile/{手机号码}获取短信验证码
  3. 根据短信验证码,调用http://pigx.com/auth/mobile/token/sms?mobile=SMS@{手机号码}&code={短信验证码}&grant_type=mobile,获取token
  4. 使用获取的token,调用http://pigx.com/admin/social/bind?state=MINI&code={微信返回的code},将token与code进行绑定

/mobile/token/social 流程

首先,因为url是以/auth开头,所以该请求会被网关pigx-gateway模块发送到pigx-auth模块

然后该请求会被com.pig4cloud.pigx.common.security.mobile.MobileAuthenticationFilter拦截,因为这个过滤器监听了/mobile/token/*,这个过滤器取出了MINI@{微信返回的code},并将这个塞入到MobileAuthenticationToken里面,然后交给认证管理器去进行认证

不知道它怎么运行的,它来到了com.pig4cloud.pigx.common.security.mobile.MobileAuthenticationProvider#authenticate,在这个方法里面,它没有办法直接处理MINI@{微信返回的code},所以它将这个发送给upms模块,交给该模块的/social/info/{inStr}进行处理

upms模块的com.pig4cloud.pigx.admin.controller.SysSocialDetailsController#getUserInfo方法里面,将MINI@{微信返回的code}这个串拆分成MINI{微信返回的code}这两部分,然后用com.pig4cloud.pigx.admin.handler.AbstractLoginHandler#handle来进行处理

AbstractLoginHandler#handle方法,会从数据库中将小程序中的app_idapp_secret取出来,然后结合{微信返回的code},调用微信的jscode2session获取 openid,使用这个 openid 去用户表里面搜索用户信息

如果查询到用户信息,则将这个用户信息返回回com.pig4cloud.pigx.common.security.mobile.MobileAuthenticationProvider#authenticate,然后返回正确的token

如果查询不到则给小程序返回401未认证

/mobile/{手机号码} 流程

上一步如果用户没有绑定过 openid,则小程序需要将手机号码发送给应用

这个url是以/admin开头的,所以这个请求会被发送到pigx-upms模块

在这个模块的com.pig4cloud.pigx.admin.controller.MobileController#sendSmsCode方法里面,pigx会将短信验证码发送给小程序,小程序打开控制台,能够看到相应的短信验证码信息

这个短信验证码同时被记录到了redis里面,以便后续进行校验

因为pigx暂时是测试版本的,所以它没有发送短信。实际生产环境是不能把短信验证码返回给小程序,而应该将短信验证码通过短信的方式发送给用户

/mobile/token/sms 流程

得到短信验证码之后,小程序端请求该接口,将手机号码和openid进行绑定

因为请求的是以/auth开头的,所以这个请求会被发送到pigx-auth模块

/mobile/token/social相似,这个请求也会被MobileAuthenticationFilter拦截,然后进入到com.pig4cloud.pigx.common.security.mobile.MobileAuthenticationProvider#authenticate

MobileAuthenticationProvider里面,验证码也会通过feign发送到pigx-upms模块里面,然后验证
手机验证码是否正确,正确的话返回token给小程序

/social/bind 流程

前面已经获取到token了,然后调用pigx-upms模块里面的com.pig4cloud.pigx.admin.controller.SysSocialDetailsController#bindSocial方法

在这个方法里面,首先会调用identify验证微信返回的code是否正确,如果正确的话能够获取到openid,然后将这个openid写入到已登录用户的账号里面

至此完成小程序绑定功能

以后小程序端再进行登录的时候,因为openid已经绑定过了,所以可以通过openid查出这个用户,将用户信息对应的token返回给小程序


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap