NSDP与CMCC不同,NSDP是一套轻量的PORTAL服务器解决方案。PORTAL服务器完全是一台标准的WEB服务器。因此,本例子程序使用 PHP来演示。下面是index.php 的源码,整套PORTAL只有两个文件,一个是PHP的首页,一个是为了支持异步提交的js代码。两个文件都在附件中。
<!DOCTYPE html>
<html>
<head>
<title>NSDP 协议演示PORTAL页面</title>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<script src="jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function(){
$(‘#go‘).click(function(){
var name=$(‘#username‘).val();
varpwd=$(‘#userpasswd‘).val();
var search =location.search;
if(search.indexOf("?") !=-1) {
var query = search.substring(search.indexOf("?")+1);
var datas=query+"&"+"username=" + name +"&" + "userpasswd=" + pwd;
} else{
var datas="username=" + name + "&" +"userpasswd=" + pwd;
}
$.ajax({
type:"POST",
url:"http://<?php echo $_GET[‘wlanapip‘];?>:14150/action/auth",
data:datas,
dataType:"json",
success:function(msg){
alert(msg);
var code = msg.code;
code = code*1;
switch (code) {
case 0 :
msg = "认证成功";break;
case 1 :
msg = "用户名或密码错误";break;
case 2 :
msg = "认证超时";break;
case 3 :
msg = "用户正在认证中";break;
case4 :
msg = "用户已认证";break;
default :
msg = "未知返回码!";break;
}
alert(msg);
}
});
});
});
</script>
</head>
<body>
<div style="width:100px;margin-left:35%;margin-right:auto;margin-top:15%">
<fieldset border:2pxstyle="width:300px;hight:auto;border-color:#0000CD">
<legend>用户登录</legend>
账 号 <input type="text"id="username" name="username" maxlength="18"autofocus required /> <br />
密 码 <input type="password"id="userpasswd" name="userpasswd" maxlength="18"required style="margin-top:5px" /> <br />
<button type="button"id="go"style="width:60px;hight:30px;margin-top:10px;margin-left:150px;">登& amp;nbsp;录</button>
</fieldset>
</div>
</body>
</html>
可以看出,NSDP简化到只有一个页面的程度,而功能却一点也不弱。客户端提交了请求后,分布式的AP认证前端会返回一段JSON,格式如下:
{
“ver”:“string”,
“sessid”:”int32”,
“code”:“int32”,
“msg”:“string”,
“username”: [
{“User-Name”:“string”}, // 用户名
{“Session-Timeout”:“u_int32_t”}, // 剩余在线时长
{ “Framed-IP-Address”:“string”},
{“NAS-IP-Address”:“string”},
……
}
Code 字段说明:
Code = 0 ,表示认证成功,携带username属性。
Code = 1 ,表示用户名或密码错误;
Code = 2 ,表示认证超时;
Code = 3 ,表示用户正在认证中;
Code = 4 ,表示用户已认证;
在HTTP认证的时候,如果HTTP认证服务器有异常(返回码不是200),则Code字段返回HTTP返回码。
这样的“跨域提交”模式,也为APP的支持奠定了良好的基础。APP可以直接向AP发起认证!这极大的简化了APP认证的流程。
NSDP协议Portal服务器源码文件请在OSSH论坛下载。
关键词:NSDP、OSSH