X-Router 开发接口说明

扩展认证开发



  扩展认证的原理是:当用户通过WEB登录,提供用户名和密码后,X-Router根据扩展认证中的设置,将该用户名和密码再次提交给设定的WEB服务器。 由该服务器完成用户名和密码的验证,再返回结果。X-Router比如WEB服务器返回的结果从而决定用户是否成功登录。

  参数“HTTP请求网址”,就是提供验证服务的WEB服务器网址。该URL中可以设置5个参数:[UserName]、[Password]、[VLANID]、[MAC]、[IP], 当X-Router调用该URL时,会自动使用客户机提供的实际用户名和密码来替换[UserName]及[Password],而客户机的当前VLAN号、MAC地址及IP地址 也会一一替换。因此,在WEB服务器中就可以获取这5个实际数值。

  参数“成功信息”是与WEB服务器约定的内容。就是WEB服务器成功验证了用户名和密码后,返回一个成功数据给X-Router。X-Router比较返回数据与 “成功信息”后决定是否成功登录。另外,X-Router对返回数据识别进行了增强,WEB服务器可以返回JSON数据,来实现对该用户更多的上网控制。WEB服务器可以返回以下JSON数据:

{
    "Status" : "Success|Failure",    // 成功认证返回Success,否则返回Failure
    "FullName" : "xxxxx",         // 返回用户名
    "PolicyId" : xxx,           // 控制策略编号
    "TcpLinks" : xxx,           // TCP连接数限制
    "UdpLinks" : xxx,           // UDP连接数限制
    "UpRate" : xxx,            // 上行带宽限制
    "DownRate" : xxx,           // 下行带宽限制
    "Message" : "xxxx"           // 出错返回信息
}

WEB服务器如果返回JSON数据,则X-Router不再比较参数“成功信息”,而是根据JSON数据中的Status字段决定成功与否。


<%
dim sReturn
dim rs,sql
dim conn,connstr
set conn=server.CreateObject("adodb.connection")
set rs=server.CreateObject("adodb.recordset")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db\db.mdb") '数据库路径和名称
conn.Open connstr

set rs=server.createobject("adodb.recordset")
sql="select * from Users where UserName='"& request("UserName") & "' and Password='" & request("Password") & "'"
rs.open sql,conn,1,3
if not rs.EOF then

    rem 返回JSON数据
    rem 数据表Users中有字段UserName,Password,FullName,PolicyId,TcpLinks,UdpLinks,UpReate,DownRate
    sReturn = "{" & _
    """Status"" : ""Success""," & _
    """FullName"" : """ & rs("FullName") & """," & _
    """PolicyId"" : " & rs("PolicyId") & "," & _
    """TcpLinks"" : " & rs("TcpLinks") & "," & _
    """UdpLinks"" : " & rs("UdpLinks") & "," & _
    """UpRate"" : " & rs("UpRate") & "," & _
    """DownRate"" : " & rs("DownRate") & _
    "}"
else
    rem 不成功,返回错误
    sReturn = "{" & _
    """Status"" : ""Failure""," & _
    """Message"" : ""用户名或密码不正确。""" & _
    "}"
end if
rs.close
Set rs=nothing
conn.close
Set conn = nothing
rem 输出JSON数据

Response.write sReturn

%>
可以在此基础上做各种扩展,比如:WIFI环境下,在用户WEB登录界面上要求输入手机号,在WEB后台中向该手机发送短信验证码。用户获取验证码后输入手机号和验证码上网。