wifidog认证Wiwiz Auth API集成示例代码(ASP.Net)

WiwizAuthApiSample.aspx:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="WiwizAuthApiSample_aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    用户名: <asp:TextBox ID="username" runat="server"></asp:TextBox>
    <br />
    密码: <asp:TextBox ID="pswd" runat="server" TextMode="Password"></asp:TextBox>
    <br />
    <asp:Button ID="login" runat="server" onclick="Login_Click" Text="登录" />
    <br />
    <asp:Label ID="LabelMsg" runat="server" Text=""></asp:Label>
    <br />


    </form>
</body>
</html>

WiwizAuthApiSample_aspx.cs:

using System;
using System.IO;
using System.Text;
using System.Web;
using System.Net;

public partial class _Default : System.Web.UI.Page 
{
    string userkey = "246DD22C084BB40E";    // 替换为你的User Key

    protected void Page_Load(object sender, EventArgs e)
    {

        //****************************************************
        // 取得接收到的传入参数 
        //****************************************************

        Session.Add("tokencode", Request.Params["tokencode"]);      // 接收到的传入参数"tokencode"
        Session.Add("srvurl", Request.Params["srvurl"]);            // 接收到的传入参数"srvurl" 
    }

    protected void Login_Click(object sender, EventArgs e)
    {
        //****************************************************
        // 第1步. 根据您的具体需要或业务,进行用户登录验证处理
        //****************************************************

        bool loginSuccess = false;

        // 根据系统自身的业务需求进行自己的账户验证/登录验证等处理
        //      ......
        //

        loginSuccess = true; // 这里假设用户登录已验证

        if(loginSuccess == false) {

            LabelMsg.Text = "登录失败!";    // 如果登录失败则报错            

        } else {

            //****************************************************
            // 第2步. 调用Wiwiz Auth API,进行预认证
            // 重要: 请在服务器端的程序中进行此处理(例如,ASP、C#、JSP/Servet、PHP...),
            //      而不要在直接客户端代码中进行此处理(例如,HTML/Javascript)
            //****************************************************

            // 参数 "action" : 必须!
            // 设置为"1"将使用户认证成功
            // 设置为"0"将使用户认证失败
            string action = "1";

            // 参数 "tokencode": 必须!
            // 设置与同名传入参数相同的值
            string tokencode = (string) Session["tokencode"];

            // 参数 "srvurl": 必须!
            // 设置与同名传入参数相同的值
            string srvurl = (string) Session["srvurl"];

            // 参数 "endtime" : 可选
            // 格式: yyyy-mm-dd hh:MM:ss  例如: 2014-05-31 21:39:00
            // 设置此参数将使用户的Internet连接在指定时间关闭
            // 注意: 对此参数的值必须进行url编码  
            string endtime = Server.UrlEncode("2014-05-31 21:39:00");

            // 参数 "postauth" : 可选
            // 例如: http://www.YourDomain.com
            // 设置此参数将设置用户在通过认证后显示的页面地址
            string postauth = "http://www.wiwiz.com";

            string parameters =
                    "wiwiz_auth_api=1&ver=1.0"+ // 参数 "wiwiz_auth_api" 与 "ver". 固定值
                    "&tokencode="+ tokencode +  // 参数 "tokencode". 设置方法参考上面的说明
                    "&userkey="+ userkey +      // 参数 "userkey". 设置方法参考上面的说明
                    "&action="+ action +        // 参数 "action". 设置方法参考上面的说明
                    "&endtime="+ endtime +      // 参数 "endtime". 设置方法参考上面的说明
                    "&postauth="+ postauth;     // 参数 "postauth". 设置方法参考上面的说明

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(srvurl);
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";

            StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
            streamOut.Write(parameters);
            streamOut.Close();

            StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
            string verifycode = streamIn.ReadToEnd();            // 获取verifycode,即Wiwiz服务端返回的验证结果
            streamIn.Close();

            string userstring = "username:" + username.Text;    // 设置自定义追踪信息(可选),本例中设为用户名

            if(verifycode.StartsWith("ERR")) {
                // 如果报错,则显示错误代码
                LabelMsg.Text = "Error: " + verifycode;

            } else {
                // 如没有报错则进行第3步。

                //****************************************************
                // 第3步. 调用Wiwiz Auth API,完成认证
                //****************************************************  
                string redirectUrl = srvurl +       // 使用传入参数"srvurl"的值作为跳转地址的前缀
                        "?wiwiz_auth_api_login=1" + // 参数 "wiwiz_auth_api_login",固定值
                        "&tokencode=" + tokencode + // 参数 "tokencode",设置与同名传入参数相同的值
                        "&verifycode=" + verifycode +   // 参数 "verifycode",Wiwiz服务端返回的验证结果
                        "&userstring=" + userstring;    // 参数 "userstring"(可选),用户设置的自定义追踪信息

                Response.Redirect(redirectUrl); // 最后,进行跳转
            }
        }
    }
}
  1. 本文章由 http://www.wifidog.pro/2015/03/23/wifidog%E8%AE%A4%E8%AF%81APS%E7%89%88.html 整理编辑,转载请注明出处

标签: wifidog认证, wifidog流程, wifidog配置, dd wrt wifidog教程, dd wrt wifidog配置