任何一个网站或者 APP,如果要避免用户滥用注册功能,就必须确保注册的是真人而不是脚本程序,在 web2.0 时代,我们一般通过验证注册者的邮箱,注册后给用户邮箱发一个激活链接用户主动点击激活链接后才认为是一个真人,否则可能是机器人在注册。
移动互联网,人人一台手机,注册方式改成了短信验证码,用户输入手机号码,系统会给手机发送一个验证码,必须是有效的验证码才能注册成功。
以上两种方式我们一般都是用第三方平台,比如邮件服务商有 mailgun,sendcloud,短信平台则更多,这里就不举例,不过大部分平台对个人开发者并不那么友好,或者收费很贵。
而我尝试使用微信公众号来是实现这种功能,发现效果很好。因微信平台对个人订阅号开放了发送接收信息的接口。具体怎么实现呢? 看看二十次幂项目中我是怎么做的?
注册时,会有一个获取验证码的入口,点击过去就是告诉你怎么获取验证码
用户关注公众号之后,每个用户都有唯一的 OPENID,所以我们可以设计一张验证码的表,字段有:
为了简化,我只列出关键字段
openid
code
valid # 是否有效
账户表:
email
password
openid
为了防止用户多次注册,我们可以限制每个 openid 只能申请一个注册验证码,也就只能注册一个账号。
用户回复关键字后,我们就给他生成一个验证码记录。这个验证码是唯一的,例如:
{"openid":"xxxxx", "code":"123", "valid":True}
用户注册时,必须将验证码和邮箱以及密码字段提交,这样,我们就可以通过验证码找到对应的 openid,这样就可以将 openid 关联到对应 email 账号了。
{"openid":"xxxxx", "email":"xx@ershicimi.com", "password":"666"}
关联后,也可以通过输入自己的 email 重置密码了,如果你输入别人的 email,是不是也可以重置呢?不行的,因为 email 与 openid 绑定了,你输别人的 email 是对不上你 openid 的
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.