• 后羿更新网站文章可能不会那么闲了

  • 不得不说,美国贴吧的界面真是难看到死

  • 看到网上新闻美国的贴吧将成为中国公司

  • 推送试试

  • 睡觉之前测试一下

  • 发现了一个非常不错的插件

  • 经过确认,微软的必应搜索在中国被屏蔽

  • 给主题增加一个阿里云的代码库

  • 正式通知一下,有赞支付已经停止业务了

  • 给网站增加一个离线缓存功能

在开发WeAuth微信扫码登录时候遇到了一些坑

WordPress 云落 2周前 (02-06) 193次浏览 9个评论
文章目录[隐藏]

前段时间发现一个小程序,可以使用微信扫码登陆,然后对其进行了一个定向开发,然后发现中间遇到的一些疑惑和问题,这里先记录一下,走过路过的如果发现能解决的话,帮忙解决一下优化一下程序。

在开发WeAuth微信扫码登录时候遇到了一些坑

介绍

接入流程

小程序的登录和接入流程非常简单,首先我们后台生成一个随机数字,然后拼接成一个特殊字符串,然后向小程序的服务器发起一个请求,小程序服务器收到我们请求之后验证一下没问题会返回一个二维码。在用户扫描二维码并完成授权之后,小程序服务器会向我们系统这边发起一个请求,而这个请求里面就包含了用户的信息以及一个验证码。这个验证码其实就是之前生成的一个随机数,我们首先需要对这个验证码和之前生成的随机数字进行验证,看是否是我们这边发起的请求。如果随机数和验证码一致的话,那么就是我们这边的请求可以进行下一步操作。用户信息是一个经过编码的数组,我们首先对其进行解码,然后进行从数组中取值就可以了。最后直接获取到用户的信息,直接插入到系统里面,即可完成了用户的注册以及登陆。

遇到的问题

其实前面所提到的流程基本上都没问题,实际上最终的问题就是卡在最后一步,就是自动登录上面。在成功获取到用户信息之后,将其插入到系统的数据库里面的时候,让注册成功,但是在自动的时候却无法登陆,原本我以为自动登录的是代码有问题,或者说因为是SSL的干扰,但是经过测试,自动登录代码是没有问题的。真实原因经排查主要是cookie的问题[我猜的],准确的说是cookie的路径问题。因为在小程序服务器向系统服务器提交请求的时候,是有一个/weauth路径的,所以我猜测,自动登录生成的cookie是不是在这个路径之下,而没有生成在网站的根目录。当然或许也不是这个问题,反正总之一句话就是自动登录完全没有效果,或者是因为那个被提交页面并没有经过浏览器访问,所以并没有生成对应的cookie。

解决问题

这是我目前解决这个问题的一个临时办法。就是在确定账号注册之后,进行一个GET跳转,使用这个跳转来实现自动登录。实际来说是用这个跳转来进行自动登录,实际上是并不是太安全的,因为GET的数据是直接就可以看到的。经过测试使用GET跳转进行登陆是可以实现的,那么问题就在于如何安全的使用GET进行自动登陆。

数据安全校验

在整个流程之中,对数据的安全处理也是必不可少的。整个流程中有两个地方需要安全校验,一个是小程序系统向我们系统发出一个请求,里面校验码和本地的随机码进行校验,另一个就是对GET数据进行安全化。而解决这个问题的办法,就是使用WP的瞬时缓存。可以将一个数据存进数据库里面时,并且给定过期时间,过期时间一到,然后自动删除。

在设计上面是这样处理的。在最初始的时候生成随机数,就将这个随机数作为一个缓存名存进数据库,数据库里面的缓存的内容可以随便一个,我这里直接设为1。当拿到小程序系统向我们推送的校验码,然后将这个校验码作为缓存名进行提取缓存数据,如果提取缓存是空的话,那么就是证明这个交易码是错的,那么安全校验失败。

第二个安全校验还是使用这个随机数,当授权成功的时候,我们再一次进行一个缓存,缓存名同样是这个随机数,为了防止冲突,我这里对这个缓存名再加一个字符串比如ok,然后缓存值就是刚刚扫码的用户的ID。
在用户前端到前灯的话,认证成功,授权成功之后,页面进行一个get跳转,值就是那个随机数,比如spam=123456 ,然后我们系统检查缓存123456ok的值,比如是20,那么扫码的用户ID就是20,这里面用户能够看到的,或者是能够发现的数据,其实就是那个随机数,那个随机数是现实的,在一分钟之后就是无效的,那个随机数其实本质上是没有任何意义的。这里面就很清楚了,就是每一次用户在扫码登录的时候,都需要建立一个缓存,然后并提取缓存,然后才能实现自动登录。

设计图

在开发WeAuth微信扫码登录时候遇到了一些坑

相关链接

WeAuth小程序官网
-- 完 --
在开发WeAuth微信扫码登录时候遇到了一些坑
扫码订阅,第一时间获得更新
微信扫码二维码,订阅我们网站的动态,另外不定时发送WordPress小技巧,你可以随时退订,欢迎订阅哦~

乐趣公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA

乐趣公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:在开发WeAuth微信扫码登录时候遇到了一些坑
喜欢 (5)
云落
关于作者:
无折腾,不生活,我是一个WordPress菜鸟,一个玩淘宝的卖家,欢迎你认识我,我是云落!
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(9)个小伙伴在吐槽
  1. 文章页内左上方的toc目录插件,用的是哪一款啊,求推荐谢谢。
    chudage2019-02-11 23:06 回复 Windows 10 | Chrome 70.0.3538.67
    • 云落
      主题自带
      云落2019-02-11 23:07 回复 Windows 10 | Chrome 71.0.3578.98
      • 秒回啊,果然程序狗都是一刻不离电脑。
        chudage2019-02-11 23:08 回复 Windows 10 | Chrome 70.0.3538.67
        • 云落
          也有可能是手机
          云落2019-02-11 23:09 回复 Windows 10 | Chrome 71.0.3578.98
          • 写文章用的哪个编辑器。另外。文章里的那些绿色间隔线,是插件还是手写。谢谢。
            chudage2019-02-11 23:12 回复 Windows 10 | Chrome 70.0.3538.67
            • 云落
              主题自带的H2标题
              云落2019-02-11 23:13 回复 Windows 10 | Chrome 71.0.3578.98
  2. 我看还是干脆再弄一个支付出来。把金币生成充值卡。然后利用丰富的充值卡寄售网站。让用户购卡后自己充值。现在像这种直接给网站实现充值功能的。政策总是时紧时松,宽松的时候是方便快捷。但每次一严厉起来就掉链子了
    风流鼠博客2019-02-10 22:27 回复 Linux | Chrome 57.0.2987.108
    • 云落
      我这个充值是没问题的
      云落2019-02-11 11:55 回复 Windows 10 | Chrome 71.0.3578.98
  3. 年后第一次来,恭喜恭喜!
    增大网2019-02-10 08:23 回复 Windows 7 | 搜狗浏览器 2.X