用户登录接口
[Access Authorization]
在咱们的设备固件制做过程当中,咱们使用了与大多数电信运营商相同的 Portal认证 技术,其中系统架构上主要由 AP无线访问接入点(Wireless Access Point)、AC接入控制器(Wireless Access Point Controller)、认证页面服务器(Captive Portal Server)、认证计费服务器(Cloud Radius Server)构成,而在云端,咱们完成了Portal页面的云存储,Captive Portal页面在线编辑,Portal静态文件CDN加速,以及上网用户数据的分析展现,同时radius服务器也经过Oauth2.0协议与第三方帐户系统的打通。html
Portal认证:java
您须要作什么?
您只须要完成 Portal页面 与 AC接入控制器(路由器) 的局域网通讯便可,而在路由器固件中咱们配置的 Radius客户端 将代替网络接入请求者向 认证计费服务器 发送认证请求,返回认证结果。android
Portal页面 与 AC接入控制器(路由器) 之间的通讯是经过json Api 完成的,为了方便您的快速开发,咱们提供了Javascript Library,您只须要引入制定JS文件,经过简单的编写Javascript代码便可自定义您的帐户认证,而这一切均可以经过 在线编辑代码 完成。web
您应该怎样去作?
1、 编辑认证页面模板,引入JS文件ajax
<script src="http://s.anywifi.com/resources/anywifiLibrary.js"></script>
注意:请不要下载保存该文件,咱们将不按期更新完善该Library.json
2、 几种经常使用认证方式api
一、匿名登录(访客模式)浏览器
匿名登录接口函数:anonymousLogin();
服务器
在上网用户未经过认证前,能够经过 访客模式 获取短暂的网络接入权限,或者您只须要访客 点击某连接便可上网 ,在这里便可使用匿名登录实现(匿名登录获取的网络接入 时常、带宽 都可在管理平台上网用户-用户组 中进行设置)。
示例
<!doctype html> <html> <head> <title>{title}</title> <script src="http://s.anywifi.com/resources/anywifiLibrary.js"></script> </head> <body> <a href="anonymousLogin();">匿名登录</a> <p>点击上面连接,便可免费上网。</p> </body> </html>
固然,你也能够利用JS的定时器来显示打开页面(点击按钮)N秒后自动登录,效果以下:
代码以下:
<!doctype html> <html> <head> <title>{title}</title> <script src="http://s.anywifi.com/resources/anywifiLibrary.js"></script> <script type="text/javascript"> function timer(){ var i = 10; $("#dt2").show(); $("#dt1").hide(); var ttt = window.setInterval(function(){ i--; $("#time").html(i); if(i==0){ clearInterval(ttt); anonymousLogin(); } }, 1000); } </script> </head> <body> <dl> <dt id="dt1"> <a href="javascript:void(0)" onclick="timer();"><span>1</span><span>点击试用免费WIFI</span></a> </dt> <dt id="dt2" style="display:none;"> <a href="javascript:void(0)"><span>1</span><span>上网配置中<em id="time">10</em></span></a> </dt> </dl> </body> </html>
二、微信登录
微信登录接口地址:http://c.anywifi.com/api/weixinlogin?uid=<平台帐户UID>
(“<平台帐户UID>”须要 <a "http:="" c.anywifi.com="" user="" login.html"="" target="_blank">登录平台 后显示)
上述微信登录接口地址,适用于在上网 认证页面 提示用户 关注某微信帐户,而后微信帐户在用户关注后自动回复 该地址连接,用户使用微信点击此连接时,则将自动调用JS微信登录接口函数,完成 微信一键关注上网 ,若是不是在微信中访问的此API地址,则将会出现请打开微信客户端的 提示。
微信一键关注上网:
微信登录接口函数:webchatLogin();
获取页面推广微信帐户:http://c.anywifi.com/api/weixinname?nasid=[NASID]
(NASID 参数能够从URL的GET查询字符串中获取)
微信登录接口函数 是区别于 匿名登录接口的,主要是由于管理平台能够对两种用户组分别设置不一样的 时常、带宽组别属性,微信登录接口,咱们一般利用微信浏览器的UA( 微信浏览器User-Agent )的特殊性,来判断是不是在微信浏览器中点击此连接,查看此页面,决定是否予以网络接入,上面提到的 微信关注一键上网接口 就是采用该思路实现的。
示例
<!doctype html> <html> <head> <title>{title}</title> <script src="http://s.anywifi.com/resources/anywifiLibrary.js"></script> <script type="text/javascript"> //经过查询字符串中的NASID判断查询该设备认证页面须要推广的微信帐号 var nasId = getQueryString('nasid'); ajaxLoad("GET","http://c.anywifi.com/api/weixinname?nasid="+nasId+"&t="+Math.random(),function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ getel('wx_name').innerHTML = xmlhttp.responseText; } }); }); </script> </head> <body> <div class="gridContainer clearfix" id="forpc" style="display:none;"> <div id="div1" class="fluid wrapper test transition"> <h1 id="logo" class="test"><img class="lo_ico" src="http://s.anywifi.com/resources/template/1/webchatonekeylogin/warnico.png"></h1> <div class="notecont transition"> <h2>WebChat Only</h2> <a class="golink" href="weixin://qr/gEx_Zm-EdTlKrSsF9xmS">关注微信<span id="wx_name"></span>认证上网</a> </div> </div> </div> <div class="gridContainer clearfix" id="forweixin" style="display:none;"> <div id="div1" class="fluid wrapper test transition"> <h1 id="logo" class="test"><img class="lo_ico" src="http://s.anywifi.com/resources/template/1/webchatonekeylogin/successico.png"></h1> <div class="notecont transition"> <h2>登录成功</h2> </div> </div> </div> <script type="text/javascript"> //根据UA判断 var ua = navigator.userAgent.toLowerCase(); var url = window.location.href; if(ua.indexOf("android")!=-1 || ua.indexOf("iphone")!=-1 || ua.indexOf("ipad")!=-1 || ua.indexOf("phone")!=-1){ //mobile end //micromessenger if(ua.indexOf("micromessenger")!=-1){ getel('forweixin').style.display='block'; setTimeout("webchatLogin()",2000); }else { getel('forpc').style.display='block'; } }else{ getel('forpc').style.display='block'; } </script> </body> </html>
三、手机号码登录
手机号登录接口函数:userLogin(mobilephone,password);
获取登录验证码:http://c.anywifi.com/api/mobilephone?nasid=[NASID]&mobilephone=[MOBILEPHONE]&mac=[MAC]&ap=[AP]
(其中NASID、MOBILEPHONE、MAC、AP参数都可从表单或者查询字符串中获取)
使用手机号码做为帐号登录,上网用户须要填写 手机号码,经过请求获取手机号码验证密码,而后填入 验证密码 便可登录(获取验证密码须要下行短信,注册帐户默认赠送50条,能够经过平台帐户购买短信,上网用户手机号码信息能够从后台浏览查看)
手机号码登录:
示例代码:
<!doctype html> <html> <head> <title>{title}</title> <script src="http://s.anywifi.com/resources/anywifiLibrary.js"></script> <script type="text/javascript"> //登录按钮 function doLogin(){ userLogin(getel("phone").value,getel("code").value); }; //获取短信验证密码 function getPhoneCode(){ var nasId = getQueryString('nasid'); var mac = getQueryString('mac'); var ap = getQueryString('called'); var mobilePhone = getel("phone").value; if(/^1\d{10}$/g.test(mobilePhone)){ ajaxLoad("GET","http://"+adminDomain+"/api/mobilephone?nasid="+nasId+"&mobilephone="+mobilePhone+"&mac="+mac+"&ap="+ap+"&t="+Math.random(),function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ if(xmlhttp.responseText=="SUCCESS"){ alert('短信验证码已发送'); }else if(xmlhttp.responseText=="OVERLOAD"){ alert('短信发送中,请稍等...'); }else{ alert(xmlhttp.responseText); } } }); }else{ alert('手机号码格式不正确'); getel("phone").value = ''; } } </script> </head> <body> <div > <input type="text" id="phone" placeholder="输入手机号" /> <button id="codeButton" onclick="getPhoneCode();" >获取验证码</button> </div> <div > <input type="text" id="code" placeholder="输入验证码" /> <button id="accordion-longinBtn2" onclick="doLogin();" >登 录</button> </div> </body> </html>