Log in

记录低代码开发平台的SSO的一次迭代——小程序嵌入WEB的登录和PC端微信扫码登录

Auteur:neo yang Tijd:2022/01/09 Lezen: 9158
微信小程序嵌入WEB的登录和PC端微信扫码登录,难度不大,但涉及修改的地方比较多,涉及到我的BAAS平台、低代 […]

微信小程序嵌入WEB的登录和PC端微信扫码登录,难度不大,但涉及修改的地方比较多,涉及到我的BAAS平台、低代码开发平台、微信小程序。特记录一下。

一、微信小程序嵌入WEB的登录。

解决的问题:在微信小程序中嵌入WEB,点击原生小程序登录按钮,实现小程序登录,如何让嵌入的WEB也同时实现登录?

思路:

1、对于嵌入WEB并需要登录后操作的页面。

打开此页面时,判断是否已登录。如果未登录,显示原生页面,并出现登录按钮。

如果小程序已经登录,显示嵌入的WEB页面,并将登录信息(包括token、用户信息)通过url传参,WEB页面接收参数后,将token发到BAAS平台的JWT验证接口验证,验证通过(也可以不验证),执行登录相关流程。

2、未登录时,点击登录按钮,实现小程序登录,刷新页面。

二、PC端扫小程序二维码登录

思路:

1、PC端生成二维码

生成二维码:将PC端扫码登录需要的小程序专用页面的path后加上scene参数。scene参数随机生成。然后调用BAAS平台的生成小程序二维码的专用接口,将这个小程序的url生成为小程序二维码。

存储二维码:将生成的二维码url存在本地,有效期1小时。

出现二维码的时机:打开登录modal时,默认登录方式为微信扫码登录。判断本地是否有有效的登录二维码,如果没有则生成一个。

2、微信扫码并登录

微信扫登录二维码,打开小程序PC端扫码登录的专用页面,并带scene参数。

点击登录,这里和正常登录有点不一样,需要将scene参数一起发给BAAS平台的小程序登录专用接口。

BAAS平台的小程序登录专用接口,做了一些修改:将scene参数加入最后输出的json中,并在输出数据前,将要输出的登录数据存入redis(转成字符串再存入)。

小程序登录后,显示登录成功提示信息。并显示“小程序退出”按钮,点击此按钮,将在小程序端退出(这是为了防止下次扫码登录时,小程序端未退出而没有出现“登录”按钮)

3、PC端自动登录

PC端的登录二维码出现后便开始轮询一个专用的islogin接口,5秒轮询一次(太快了没必要)。带参数scene。如果接口返回false则5秒后再请求,如果返回不是false而是登录信息,则停止轮询,从登录信息中取出token发送到BAAS平台的JWT的验证接口验证,通过验证后执行登录流程。

这个接口是本次迭代新增的。它根据scene判断redis中是否有相应的数据。如果没有,则返回false,如果有,则从redis中取出相应数据,转成json,然后返回,返回前,将redis中相应数据删除。



copyright © www.lyustu.com alle rechten voorbehouden.
Thema: TheMoon V3.0. Auteur: neo yang