公共场合的 wifi 通常是填写手机号,发送验证码反馈回去就能登陆了。这其中的原理是什么?
参考wikipedia
其中提到的实现方式有很多种,
例如ZEALOT09 提到的openwrt下的 常见有wifidog
做过的微信认证
openwrt,通过刷路由刷入跟服务器后台交互的程序。
用户连上wifi时,分配一个ip给设备,记录下其mac地址与ip,然后限制其上网,使其跳转至号码验证页面
验证 -> 发短信 -> 服务器检查验证码
路由器解除上网限制
刷openwrt还是挺蛋疼的。
我做的项目中,大致如下,我猜别人家的也应该是这样:
-
用户
从客户端
拿手机号发起验证码请求; -
服务端
生成并记录验证码; -
服务端
调用短信接口
,向用户的手机发送短信; - 用户收到验证码短信;
- 用户使用刚才收到的验证码,向服务端发起认证请求;
- 服务端判断验证码的合法性(比对、过期时间 balabala),并返回结果;
-
客户端
根据服务器返回的合法性结果,决定是否与路由器通信、是否放行本次上网请求;