手机验证码替代方案(为了省钱)

前言

最近在想着一个事情,就是新用户注册一个应用的时候,会使用手机验证码的方式进行验证,以确保本次注册真实有效。关于手机验证码用途的说明,请看这篇文章短信验证码有什么作用?

但是发手机验证码是需要花钱的,有没有什么方法可以即实现手机验证码的功能,又不需要花钱呢。很早以前,大家使用邮箱进行验证,但是邮箱被盗取、滥用的几率,比手机高很多。手机验证码之所以能代替邮箱,成为主流的验证方式,是因为手机被盗取,手机号被滥用的几率相对邮箱,比较底。既然手机可以收验证码,也可以通过其他方式登陆,比如APP里的扫一扫。说到扫一扫,就必须要提到微信了。

微信登陆

我们可以把防止机器注册的问题交给微信处理,让所有注册用户都必须使用微信登陆。但是使用微信登陆必须要是企业才能开通。还有微信公众号有一个网页授权功能,也可以满足验证,但是需要服务号才能使用,同样,申请服务号也需要企业才能申请。这就给个人小作坊网站断了后路。

订阅号消息处理

但是微信的订阅号是个人就可以申请的。订阅号可以接受并处理用户发送过来的消息。如下图所示:


被动回复用户消息

我们可以利用这个被动回复用户消息的功能。在用户注册的时候绑定它的微信号,这样达到了验证用户真实注册的目的。假设我们已经有了一个微信订阅号,具体的步骤如下:

  1. 当用户注册时,在后台生成一个6位数的密码,记作code。
  2. 用户输入完注册信息后,显示订阅号的二维码,然后提示用户使用微信扫码关注订阅号后输入code。
  3. 用户在订阅号输入code后,前端注册页面提示用户验证通过(这里注册页面需要和服务端保持连接),服务器记录本次用户注册时关联的微信openid。
  4. 用户找回密码等重要重置操作都可以在订阅号的输入框里完成。如果用户取消对该订阅号的关注,订阅号后台处理程序会收到这个消息,这时我们可以冻结用户的账号,提示用户再次关注,或者用新的微信号关注订阅号重新输入code验证才能继续使用网站服务。

完成了上诉步骤,我们甚至可以实现,用户不用输入账号密码就能登陆,只是稍微让用户点一点,扫一扫就可以。具体步骤如下:

  1. 因为用户的微信号已经关注了我们的订阅号,我们订阅号的菜单里可以有一个登陆的选项。当用户点击登陆的时候,我们给用户回复一个链接,让用户在微信里打开这个链接。
  2. 用户在微信里打开登陆链接后,给用户种下标识登陆的cookie。
  3. 用户到网站登陆页面登陆时,提供一个二维码,让用户使用微信扫。用户使用微信扫描后,服务器端就知道用户可以登陆成功。网站登陆页面跳转到登陆状态。
  4. 整个验证流程是:订阅号知道用户是谁-》微信里的浏览器标识用户登陆-》微信浏览器打开网站提供的链接(二维码)-》微信里把登陆状态转递给网站(通过服务器标记)-》最好用户在网站里登陆。

不得不承认,这个方案有一些繁琐。但是相对于用户输入账号密码,或者需要花钱的手机号验证码登陆。还是方便不少的。

总结

这个方案从理论上讲是可行的。下次我们把代码也给实现了。这样就可以使用了,谁叫我们还没注册公司就想上一个体验比较好的网站呢。

你可能感兴趣的:(手机验证码替代方案(为了省钱))