wifi免密码登录认证流程
用户登陆接口
[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协议与第三方账户系统的打通。
Portal认证:
您需要做什么?
您只需要完成 Portal页面 与 AC接入控制器(路由器) 的局域网通信即可,而在路由器固件中我们配置的 Radius客户端 将代替网络接入请求者向 认证计费服务器 发送认证请求,返回认证结果。
Portal页面 与 AC接入控制器(路由器) 之间的通信是通过json Api 完成的,为了方便您的快速开发,我们提供了Javascript Library,您只需要引入制定JS文件,通过简单的编写Javascript代码即可自定义您的账户认证,而这一切都可以通过 在线编辑代码 完成。
您应该怎样去做?
一、 编辑认证页面模板,引入JS文件
<script src="http://s.anywifi.com/resources/anywifiLibrary.js"></script>
注意:请不要下载保存该文件,我们将不定期更新完善该Library.
二、 几种常用认证方式
1、匿名登陆(访客模式)
匿名登陆接口函数: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>
2、微信登陆
微信登陆接口地址: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>
3、手机号码登陆
手机号登陆接口函数: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>
wifi免密码登录认证流程的更多相关文章
- linux ssh公钥免密码登录
ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 一.SSH公钥登录原理 在平时工作中我们经常要远程登录服务器,这就要用到SSH ...
- CentOS配置SSH免密码登录后,仍提示输入密码
CentOS配置SSH无密码登录需要3步: 生成公钥和私钥 导入公钥到认证文件,更改权限 测试 1.生成公钥和私钥 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 默 ...
- 集群ssh服务和免密码登录的配置
安装Hadoop之前,由于集群中大量主机进行分布式计算需要相互进行数据通信,服务器之间的连接需要通过ssh来进行,所以要安装ssh服务,默认情况下通过ssh登录服务器需要输入用户名和密码进行连接,如果 ...
- 配置Ssh免密码登录
配置Ssh免密码登录 一个master节点,两个client节点(client1.client2) 1.所有节点创建hadoop用户,并设置密码 以root账号登录: useradd hadoop p ...
- ssh (免密码登录、开启服务)
ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以Unbutun为例.有机器A(192.168.1.155),B(192.168.1.181).现想 ...
- Hadoop集群搭建过程中ssh免密码登录(二)
一.为什么设置ssh免密码登录 在集群中,Hadoop控制脚本依赖SSH来执行针对整个集群的操作.例如,某个脚本能够终止并重启集群中的所有守护进程.所以,需要安装SSH,但是,SSH远程登陆的时候,需 ...
- SFTP免密码登录原理
概述 Public Key认证的主要魅力在于认证时承诺不必提供密码就能够同远程系统建立连接. Public Key认证的基础在于一对密钥,public key和private key,public k ...
- SSH免密码登录教程
在一些受信任的环境中配置免密码登录,是比较方便的:而对于ansible等自动化工具配置免密码登录更是必要的. 免密码登录的要点就是,把想让服务器信任的客户机的公钥发送到服务器. 当客户机连接服务器时直 ...
- Centos6.5之ssh免密码登录配置
Centos6.5之ssh免密码登录配置 centos ssh 免密码登录 0.说明 这里为了方便说明问题,假设有A和B两台安装了centos6.5的主机.目标是实现A.B两台主机分别能够通过ssh免 ...
随机推荐
- [Android Pro] Android7.0系统 关于Android获取流量计数TrafficStats.getUidRxBytes(uid)和TrafficStats.getUidTxBytes(uid)返回-1解决方案
reference : http://blog.csdn.net/zhangyong7112/article/details/54574214 最近一个关于流量的项目在Android7.0系统的手机上 ...
- STL源码剖析——hashtable
二叉搜索树具有对数时间的搜索复杂度,但是这样的复杂度是再输入数据有足够的随机性的假设上哈希表在插入删除搜索操作上也具有常数时间的表现,而且这种表现是以统计为基础,不需要依赖输入元素的随机性 hasht ...
- 阿里云服务器ajax乱码问题
web.config增加节点 <globalization requestEncoding="utf-8" responseEncoding="utf-8 ...
- Shell学习:grep, sed, awk命令的练习题
http://www.cnblogs.com/chengmo/archive/2013/01/17/2865479.html 文件:datafileSteve Blenheim:238-923-736 ...
- 通过form表单上传文件获取后台传来的数据
小伙伴是不是遇到过这样的问题,通过submit提交form表单的时候,不知怎么获取后台传来的返回值.有的小伙伴就会说你不会发送ajax,其实也会.假如提交的form表单中含有文件,怎么办? 步骤1:想 ...
- windows10 Sqlserver卸载 指定账户不存在
在windows卸载程序时,有时会出现因提示“指定的账户不存在”而无法删除,如下: 这时时候要先选择要删除的项目,进行修复后再进行删除就可以正常删除了
- Java GC、新生代、老年代
堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象.在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ( ...
- Android -- 动态添加布局
在做项目的时候,遇到了scrollView与listView结合的使用,导致了滑动的混乱,但是有一个办法可以解决掉这个问题,就是手写listView的高度,还有另外一种方法,传送门:<Andro ...
- mahout运行测试与kmeans算法解析
在使用mahout之前要安装并启动hadoop集群 将mahout的包上传至linux中并解压即可 mahout下载地址: 点击打开链接 mahout中的算法大致可以分为三大类: 聚类,协同过滤和分类 ...
- Ubuntu 中/etc/resolv.conf 文件修改丢失的解决方案
方法一 1.需要创建一个文件/etc/resolvconf/resolv.conf.d/tail sudo vi /etc/resolvconf/resolv.conf.d/tail 2.在该文件中写 ...