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
fieldset border:2px
legend 用户登录 /legend
账 nbsp; nbsp;号 nbsp; nbsp; input type= text id= username name= username maxlength= 18 autofocus required / br /
密 nbsp; nbsp;码 nbsp; nbsp; input type= password id= userpasswd name= userpasswd maxlength= 18 required
button type= button id= go
/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